———————————————————————————————
———————————————————————————————
****************************递归与迭代的区别*******************************
(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项,是一个递推的过程
举个例子,数列: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)就可以写一个函数:
求f(n)就可以写一个函数:
int f(int n)
{
if(n==0||n==1)
return 1;
else
return f[n-1]+f[n-2];
}
———————————————————————————————
———————————————————————————————
****************************迭代与递推的区别*******************************
迭代和递推区别:
可以这样理解:
比如在下个循环中有:
a=a+3;
这个就是迭代。
可以这样理解:
比如在下个循环中有:
a=a+3;
这个就是迭代。
(自己感觉迭代差不多和循环一个意思了)
递推
如求阶乘, 假设f(n)是n!;
那么f(n+1)=(n+1)f(n); 这个就是递推