浅谈递归递推

递归:

将问题规模为n的问题,降解成若干个规模为n-1的问题,依次降解,直到问题规模可求,求出低阶规模的解,代入高阶问题中,直至求出规模为n的问题的解。

递推:

构造低阶的规模(如规模为i,一般i=0)的问题,并求出解,推导出问题规模为i+1的问题以及解,依次推到规模为n的问题。

显然能用递推的话就用递推, 一般肯定要比递归快,除非有的问题不用递归做不出来的.


关于递推,最经典的递推肯定就是斐波那契序列,接下来基本上都是斐波那契序列的变式。

伪代码如下

float fibonacci(int n) 

if(n==1) 
return 1; 
if(n==2) 
return 1; 
return fibonacci(n-1)+fibonacci(n-2); 

关于递归

最经典的就是计算阶乘问题啦

计算阶乘,就是从1到指定数之间的所有自然数相乘的结果,n的阶乘为:

   n! = n*(n-1)*(n-2)*.......*2*1;
   代码:

int fact(int n){
   if(n <= 1)
      return n;
   else
      return n*fact(n-1);  
}

总的而言,递归递推是相当有用的思想,而且代码也相对简单,但是思考的时候很难想,就是一句话,要找规律,找出规律来,你就能AC了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值