1樓:華師
(1)首先我們建立一個函式,判斷函式的合法性
[cpp] view plaincopy
void jump_ladder(int layer, int* stack, int* top)
(2)判斷當前的層數是為1或者是否為2
[cpp] view plaincopy
void jump_ladder(int layer, int* stack, int* top)
if(layer == 2)
return;
} (3)對於2中提及的列印函式進行設計,**補全
[cpp] view plaincopy
#define general_print_message(x)\
do while(0)
void printf_layer_one(int layer, int* stack, int* top)
void printf_layer_two(int layer, int* stack, int* top)
注: a)**中我們使用了巨集,注意這是一個do{}while(0)的結構,同時我們對x進行了字串強轉
b)當剩**階為2的時候,此時有兩種情形,要麼一次跳完;要麼分兩次
(4)當階梯不為1或者2的時候,此時需要遞迴處理
[cpp] view plaincopy
void _jump_ladder(int layer, int* stack, int* top, int decrease)
void jump_ladder(int layer, int* stack, int* top)
if(layer == 2)
_jump_ladder(layer- 1, stack, top, 1);
_jump_ladder(layer- 2, stack, top, 2);
} 這裡在函式的結尾新增了一個函式,主要是遞迴的時候需要向堆疊中儲存一些資料,為了**簡練,我們重新定義了一個函式。
總結:1)這道題目和斐波那契數列十分類似,是一道地地道道的遞迴題目
2)遞迴的函式也需要好好測試,使用不當,極容易堆疊溢位或者死迴圈。對此,我們可以按照引數從小到大的順序依次測試,比如說,可以測試樓梯為1、2、3的時候應該怎麼執行,同時手算和程式相結合,不斷修正**,完善**。
2樓:眾裡尋他
遞迴演算法要知道遞迴表示式,爬梯子的遞迴表示式:
f[n] =
1 ; n = 1
2 ; n = 2
f[n-1] + f[n-2] ; n > 2int p(int x)
3樓:昝成秋梵
沒錯啊,我改了之後沒出問題
c語言 用遞迴法寫爬樓梯 一次可以爬一級 可以爬兩級 n級的話有多少種爬樓方法
4樓:手機使用者
#include
void main()
unsigned long count (int n)
5樓:匿名使用者
好顯然啊!
抄1級---1種
2級---2種
3級---3種
4級---5種
5級---8種
……這是個斐波納契數列
通項公式(就是n級有多少種):f(n)=[(1+√5)/2]^n /√5 - [(1-√5)/2]^n /√5
c語言求法:參看
c++爬樓梯問題
6樓:匿名使用者
#include
using namespace std;
int dp[101][101],n,m;
int main()
printf("%d\n",dp[m][n]);}
堅持爬樓梯多久可以瘦腿,每天堅持爬樓梯半個小時可以瘦腿嗎
一.爬樓梯 法的原理 爬樓梯是一項健康的有氧運動,它主要的運動部位是大腿,但又能鍛鍊全身。和其他有氧運動一樣,爬樓梯法讓身體發熱,增強新陳代謝,消耗體內食物轉化的atp。全身性的有氧運動,加快整個身體中的血液迴圈,幫助大腿部位的脂肪代謝。二.爬樓梯 主要消耗下半身脂肪 我們知道,脂肪主要聚積在臉 頸...
爬樓梯的壞處有哪些,爬樓梯對膝蓋有傷害嗎?
teamo大頭 容易得膝關節炎。膝關節炎是骨性關節炎的一種,本來,關節兩截骨頭由軟骨覆蓋,軟骨被磨損掉了,便會得該病。因膝關節所承受的壓力大,幾乎負擔著整個人的體重,磨損的機會就更大,所以此處病變的發生率最高。而運動方式也會決定著膝關節的使用年限。上下樓梯的動作會增加膝關節的磨損。人體骨骼老化的時間...
人們爬樓梯的速度大概是多少,人們爬樓梯的速度大概是多少
二噸茅臺 爬樓梯可以在室內或室外進行,城市居民可以利用高樓建築物內的樓梯進行運動鍛鍊 而農村居住平房的群眾,因缺少樓梯則不能做此項運動。適宜能完成動作的所有人群,但患有髖關節 膝關節 踝關節疾病的人不能參加此項運動。注意事項 1 跑樓梯運動時膝關節部位承受負荷較大,有膝關節部位損傷和疾病的人不宜參加...