您的位置:首页 > 其它

(区别)递归与迭代&&递归与递推&&迭代与递推

2017-02-21 12:28 405 查看
———————————————————————————————

———————————————————————————————

****************************递归与迭代的区别*******************************

(1)分别用递归法和迭代法求阶乘

#include <stdio.h>

// 递归计算阶乘
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;
}


(2)分别用递归法和迭代法求斐波那契数列

//使用递归的方法实现

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


———————————————————————————————
———————————————————————————————

****************************递归与递推的区别*******************************

递推就是从前往后推
递归就是从后往前推,有个回溯的过程

举个例子,数列:1,1,2,3,5,8,13,21,……

要求第100项,就得从前两项开始推,直到第100项,是一个递推的过程

f[0]=f[1]=1;
for(i=2;i<101;i++)
{
f[i]=f[i-1]+f[i-2];
}


如果已知:f(n)=f(n-1)+f(n-2),f(0)=f(1)=1;

求f(n)就可以写一个函数:
int f(int n)
{
if(n==0||n==1)
return 1;
else
return f[n-1]+f[n-2];
}


———————————————————————————————
———————————————————————————————

****************************迭代与递推的区别*******************************

迭代和递推区别:

可以这样理解:

比如在下个循环中有:

a=a+3;

这个就是迭代。
(自己感觉迭代差不多和循环一个意思了)

递推

如求阶乘,假设f(n)是n!;
那么f(n+1)=(n+1)f(n); 这个就是递推

<
4000
br />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: