(区别)递归与迭代&&递归与递推&&迭代与递推
2017-02-21 12:28
405 查看
———————————————————————————————
———————————————————————————————
****************************递归与迭代的区别*******************************
(1)分别用递归法和迭代法求阶乘
(2)分别用递归法和迭代法求斐波那契数列
———————————————————————————————
———————————————————————————————
****************************递归与递推的区别*******************************
递推就是从前往后推
递归就是从后往前推,有个回溯的过程
举个例子,数列:1,1,2,3,5,8,13,21,……
要求第100项,就得从前两项开始推,直到第100项,是一个递推的过程
如果已知:f(n)=f(n-1)+f(n-2),f(0)=f(1)=1;
求f(n)就可以写一个函数:
———————————————————————————————
———————————————————————————————
****************************迭代与递推的区别*******************************
迭代和递推区别:
可以这样理解:
比如在下个循环中有:
a=a+3;
这个就是迭代。
(自己感觉迭代差不多和循环一个意思了)
递推
如求阶乘,假设f(n)是n!;
那么f(n+1)=(n+1)f(n); 这个就是递推
<
4000
br />
———————————————————————————————
****************************递归与迭代的区别*******************************
(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 />
相关文章推荐