阶乘、斐波那契等递归实现
常见递归方法的实现,注意终结条件和递归过程即可。
#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;
}
#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;
}