前言
昨天我算是初步了解了递归并且做了一定的练习,今天就来看一看递归的而两个经典案例:青蛙跳台阶和斐波那契数列的实现。
一、青蛙跳台阶和斐波那契数列是什么?
青蛙跳台阶和斐波那契数列算是递归的两个经典案例了。
青蛙跳台阶就是说有一个青蛙,他面前有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