阶乘、斐波那契等递归实现

常见递归方法的实现,注意终结条件和递归过程即可。

  #include <stdio.h>

#include  < tchar.h >
#include 
< cstdlib >
#include 
< iostream >
#include 
< sys / timeb.h >
#include 
< ctime >
#include 
< climits >
#include 
< cassert >
#include 
< cmath >

using   namespace  std;

// 递归求和
int  sum( int   * arr ,  int  len)
{
    
if (len  ==   1 )
    {
        
return  arr[ 0 ];
    }
    
else
    {
        
return  arr[len - 1 +  sum(arr,len - 1 );
    }
}

// 递归求阶乘
int  factorial( int  n)
{
    
if (n  ==   0 )
    {
        
return   1 ;
    }
    
else
    {
        
return  n * factorial(n - 1 );
    }
}

// 递归求斐波那契
int  fibonacci( int  n)
{
    
if ( n  <= 2  )
    {
        
return   1 ;
    }
    
else
    {
        
return  fibonacci(n  -   1 +  fibonacci(n  -   2 );
    }
}


int  _tmain( int  argc, _TCHAR *  argv[])
{   
    
int  n  =   0 ;
    cout 
<<   " 请输入数组的大小: "  ;
    cin 
>>  n;
    
int   * arr  =   new   int [n];
    
for ( int  i = 0 ;i < n; ++ i)
    {
        arr[i] 
=  rand()  %   100 ;
    }

    cout 
<<   " 该数组随机产生的数值为: "  ;

    
for ( int  i = 0 ;i < n; ++ i)
    {
        cout 
<<  arr[i]  <<   "   "
    }

    cout 
<<  endl  <<   " 该数组的和为: "   <<  sum(arr,n)  <<  endl;

    
for ( int  i = 0 ;i < 10 ; ++ i)
    {
        cout 
<<   " factorial( "   <<  i  << " ) =  "   <<  factorial(i)  <<  endl;
    }

    
for ( int  i = 0 ;i < 10 ; ++ i)
    {
        cout 
<<   " fibonacci( "   <<  i  << " ) =  "   <<  fibonacci(i)  <<  endl;
    }

    system(
" pause " );
    
return   0 ;
}

 

你可能感兴趣的:(递归)