———————————————————————————————
———————————————————————————————
****************************递归与迭代的区别*******************************
(1)分别用递归法和迭代法求阶乘
#include
// 递归计算阶乘
long factorial_recursion(int n){
if(n<=0){
return 1;
}else{
return n * factorial_recursion(n-1);
}
}
// 迭代计算阶乘
long factorial_iteration(int n){
int result = 1;
while(n>1){
result *= n;
n--;
}
return result;
}
//使用递归的方法实现
long long fibonacci_recursive(int n) {
if (n <= 0)
return 0;
if (n == 1)
return 1;
return fibonacci_recursive(n - 2) + fibonacci_recursive(n - 1);
}
//使用迭代的方法实现
long long fibonacci_iteration(int n) {
int result[2] = { 0, 1 };
int i = 2;
long long num = 0;
if(n < 2) {
return result[n];
}
long long fib_minusone = 1;
long long fib_minustwo = 0;
for(;i <=n;i++) {
num = fib_minusone + fib_minustwo;
fib_minustwo = fib_minusone;
fib_minusone = num;
}
return num;
}
f[0]=f[1]=1;
for(i=2;i<101;i++)
{
f[i]=f[i-1]+f[i-2];
}
int f(int n)
{
if(n==0||n==1)
return 1;
else
return f[n-1]+f[n-2];
}