国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

使用C++遞歸求解跳臺階問題

2020-01-26 14:43:33
字體:
來源:轉載
供稿:網(wǎng)友

題目:

一個臺階總共有 n 級,如果一次可以跳 1 級,也可以跳 2 級。求總共有多少總跳法?

分析:

也是比較基礎的題目,通過遞歸可以方便的求解。
用Fib(n)表示青蛙跳上n階臺階的跳法數(shù),青蛙一次性跳上n階臺階的跳法數(shù)1(n階跳),設定Fib(0) = 1;
       當n = 1 時, 只有一種跳法,即1階跳:Fib(1) = 1;
       當n = 2 時, 有兩種跳的方式,一階跳和二階跳:Fib(2) = Fib(1) + Fib(0) = 2;
       當n = 3 時,有三種跳的方式,第一次跳出一階后,后面還有Fib(3-1)中跳法; 第一次跳出二階后,后面還有Fib(3-2)中跳法;第一次跳出三階后,后面還有Fib(3-3)中跳法
        Fib(3) = Fib(2) + Fib(1)+Fib(0)=4;
       當n = n 時,共有n種跳的方式,第一次跳出一階后,后面還有Fib(n-1)中跳法; 第一次跳出二階后,后面還有Fib(n-2)中跳法..........................第一次跳出n階后,后面還有 Fib(n-n)中跳法.
       Fib(n) = Fib(n-1)+Fib(n-2)+Fib(n-3)+..........+Fib(n-n)=Fib(0)+Fib(1)+Fib(2)+.......+Fib(n-1)
      又因為Fib(n-1)=Fib(0)+Fib(1)+Fib(2)+.......+Fib(n-2)
      兩式相減得:Fib(n)-Fib(n-1)=Fib(n-1)         =====》  Fib(n) = 2*Fib(n-1)     n >= 2
      遞歸等式如下:

2016215164218510.png (464×172)

代碼實現(xiàn)如下(GCC編譯通過):

#include "stdio.h"#include "stdlib.h" int function(int n); int main(void){  int tmp;     tmp = function(5);  printf("%3d/n",tmp);   return 0;} int function(int n){  if(n == 1)    return 1;  else if(n == 2)    return 2;  else      return function(n-1) + function(n-2);}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 启东市| 德州市| 普定县| 安徽省| 周宁县| 安乡县| 大安市| 岑巩县| 吉隆县| 辽阳县| 镇远县| 乌兰浩特市| 运城市| 南开区| 康定县| 定边县| 紫阳县| 平陆县| 安龙县| 双江| 江门市| 封丘县| 武隆县| 桃园县| 拉萨市| 石楼县| 永春县| 浠水县| 渭南市| 增城市| 抚州市| 襄城县| 呼伦贝尔市| 军事| 米易县| 会宁县| 扎赉特旗| 绵阳市| 化德县| 阿城市| 龙口市|