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

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

  #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;
}

 

posted on 2010-10-27 10:40  虚怀若谷  阅读(362)  评论(0编辑  收藏  举报

导航