青蛙跳台階問題(C語言)

2021-10-25 20:00:52 字數 1057 閱讀 2558

題目描述

乙隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。

題目分析

分析思路:青蛙對每級台階可選擇過或者不過

換個角度來看,題目的問題等價於,青蛙現在在起點n=0處。目標是n=n處。那麼經過序號1,2,3…n-1層台階。對於每一層台階,都可以隨意選擇通過,或者不通過。

數學歸納法證明

下面是嚴格的數學歸納法證明:

我們設青蛙需要跳上的台階級數為n,f(n)代表乙個青蛙跳上n級台階的跳法數目。

類似於之前的普通青蛙跳台階,我們根據青蛙的第一步跳多少台階分情況進行分析。

青蛙的第一步可以跳1層,2層…n層

(1)青蛙第一步跳到1層,剩下的跳法為f(n-1)

(2) 青蛙第一步跳到2層,剩下的跳法為f(n-2)

…(n-1)青蛙第一步跳到n-1層,剩下的跳法為f(1)

那麼綜上得到

式1:f(n)=f(n-1)+f(n-2)+…f(1)

同理對於f(n-1)有

式2:f(n-1)=f(n-2)+f(n-3)+…f(1)

由上述兩式得到:f(n)=2*f(n-1)

依次類推得到:f(n)=f(1)*2(n-1)=2^(n-1)

綜上所述,不管是哪種分析思路,我們都得到了

當n>=1時,f(n)和n之間的關係

f(n)=2^(n-1)

解決方法

方法一:迴圈實現2的正整數次冪

方法二:用位操作執行

#define _crt_secure_no_warnings

// 青蛙跳台階.

#include

//方法一:迴圈實現2的正整數次冪

intjumpfloor_1

(int n)

return result;};

//方法二 ,位操作方法

intjumpfloor_2

(int n)

intmain()

青蛙跳台階問題

題目 乙隻青蛙一次可以跳上 1 級台階,也可以跳上2 級。求該青蛙跳上乙個n 級的台階總共有多少種跳法。我的思路 最開始我的思路是把這個看成是乙個數學問題,n i 1 k 2先把所有可能滿足這個公式的i和k求出來。然後在對i和k做排列組合。很明顯i的範圍應該是0 public int jumpflo...

青蛙跳台階問題

1 乙隻青蛙一次可以跳上 1 級台階,也可以跳上2 級。求該青蛙跳上乙個n 級的台階總共有多少種跳法。2 乙隻青蛙一次可以跳上1級台階,也可以跳上2 級 它也可以跳上n 級,此時該青蛙跳上乙個n級的台階總共有多少種跳法?分析 1 當n 1,只有1中跳法 當n 2時,有兩種跳法 當n 3 時,有3種跳...

青蛙跳台階問題

問題一 有乙隻青蛙,需要跳上100級台階。青蛙每次可以調一級或者兩級台階。問青蛙有多少種方式可以跳100級台階。思路 逆推 當青蛙站在100級台階上時,那它跳上100級時有可能是從99級跳一級上來的,也可能是從98級跳兩級跳上來的 從98級跳兩個一級包括在從99級跳一級情況內,所以不予考慮 所以f ...