———————————————————————————————
———————————————————————————————
****************************递归与迭代的区别*******************************
(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[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;}——————————————————————————————————————————————————————————————****************************递归与递推的区别*******************************递推就是从前往后推递归就是从后往前推,有个回溯的过程举个例子,数列: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); 这个就是递推
新闻热点
疑难解答