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

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

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

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

(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); 这个就是递推



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值