递归2之对青蛙跳台阶和斐波那契数列的思考


前言

昨天我算是初步了解了递归并且做了一定的练习,今天就来看一看递归的而两个经典案例:青蛙跳台阶和斐波那契数列的实现。


一、青蛙跳台阶和斐波那契数列是什么?

青蛙跳台阶和斐波那契数列算是递归的两个经典案例了。

青蛙跳台阶就是说有一个青蛙,他面前有n级台阶,青蛙每次可以跳一级或者两级台阶,这个呢是根据青蛙的心情来看的,问青蛙跳这n级台阶有多少种跳法?

斐波那契数列,又称黄金分割数列,指的是这样一个数列:、1、1、2、3、5、8、13、21、34、……

下面就来对他们用C语言逐个实现。

二、两者的逐个实现

1.青蛙跳台阶

猛地一看这个问题感觉好像很难解决,但是仔细一想其实也没那么难,这种时候使用逆推法有很好的效果。假设这个青蛙现在就处于第5级台阶,那青蛙跳到第5级台阶的前一步一定是跳到第4级或者第3级台阶上,第4级台阶和第3级台阶的前一步也是一定是这个规律,直到推导到青蛙处于第2级或者第1级台阶的时候停止。因为青蛙跳到第1级台阶一定只需要一步,而青蛙跳到第2级台阶则是最多需要两步。

分析完问题我们显然已经得到了递推公式:
Jump(n)=Jump(n-1)+Jump(n-2);
那限制条件根据前面的分析,也很容易的得到了,就是n==1或者n==2的时候,结束递归,因为这两个阶段n的值是已知的也是固定的。根据这两点我们可以开始编写程序了,代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
long long Jump(int n) {
   
	if 
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值