1. 程式人生 > >遞迴函式的編寫思路及注意事項

遞迴函式的編寫思路及注意事項

函式的巢狀
  在呼叫一個A函式時,A函式又呼叫B函式,B函式又呼叫C函式,...
  
遞迴函式
  就是直接或間接呼叫自己
  可以簡便的方式解決複雜問題
  速度比功能相同的非遞迴函式慢
  遞迴必須是有條件的
  // 遞迴函式求陣列元素的最大值
  #include<iostream.h>
  int max(int *p,int n)
  {
    if(n==1)
      return *p;
    int m=max(p+1,n-1);
    if(*p>m)
      return *p;
    return m;
  }
  void main()
  {
    int a[5]={111,9,5,83,3};
    cout<<max(a,5)<<endl;
  }
  // 以10進位制顯示一個正整數

  #include<iostream.h>
  void display(unsigned int num)
  {
    if (num>=10)
      display(num/10);
    cout<<(num%10);
  }
  void main()
  {
    display(451278);
    cout<<endl;
  }
  // 計算 1+2+3+...+n 的和
  #include<iostream.h>
  int sum(int n)
  {
   if (n==1)
      return 1;
    else
      return n+sum(n-1);
  }
  void main()
  {
    cout<<"1+2+3+...+10 = "
    <<sum(10)<<endl;
    cout<<"1+2+3+...+100 = "
    <<sum(100)<<endl;
  }
  // 計算階乘

  #include<iostream.h>
  int f(int n)
  {
    if(n==1)
      return 1;
    return n*f(n-1);
  }
  void main()
  {
    cout<<"5!="<<f(5)<<endl;
  }