递归算法-----递归算法优化------非递归算法(递推,迭代)----运行时间

递归法把问题转化为规模更小的子问题解决。

递归法思路清子晰,编程简单,但有时候难以想到。

如果确定了用递归法解题,思考的重点应放到建立原问题和子问题之间的联系。

有的问题有很明显的递归结构,但需要仔细思考,才能转化为相同的子问题。



边界条件与递归方程是递归函数的两个要素,递归函数只有具备了这两个要素,才能在有限次计算后得出结果。

斐波那契数列

我们知道斐波那契数列的前面几项,1、1、2、3…,和斐波那契数列的递推公式为
       F[i] = F[i-1] + F[i-2]
现在给出一个n,计算出F[n]的值。


#include<stdio.h>
#include<time.h>
int num=0;
int F(int a)
{
    num++;
    if(a==0 || a==1)
        return 1;
    else
        return F(a-1)+F(a-2);
}
int main()
{
    long op,ed;
    int n;
    while(scanf("%d",&n)!=EOF)
    {

num=0;
        op=clock();
        printf("F(%d) = %d\n",n,F(n));
        printf("递归次数:%d\n",num);
        ed=clock();
        printf("时间:%ldms\n",ed-op);
    }
    return 0;
}

1
F(1) = 1
递归次数:1
时间:1ms<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值