遞迴和遞推解決爬樓梯問題
阿新 • • 發佈:2019-01-09
題目:樓梯一次可以爬1級,也可以爬2級,有N級樓梯,有多少種走法?
看到此題首先找出規律
1 走到第1級,有1種方法
2 走到第2級,有2種方法
3 走到第3級,有3種方法
4 走到第4級,有5種方法
5 走到第5級,有8種方法
以此類推,後面的總等於前面兩級方法之和,現在使用遞迴和遞推兩種方法解決本問題
利用遞迴實現
#include <stdio.h> int climb(int pos) { if(1 == pos) return 1; else if(2 == pos) return 2; else return (climb(pos-1)+climb(pos-2)); } int main() { int stair = 0; printf("Please Input:"); scanf("%d", &stair); printf("Result:%d\n", climb(stair)); return 0; }
利用遞推實現,編譯時注意要加上 -std=c99
#include <stdio.h> int main() { int size; printf("Please Input:"); scanf("%d", &size); int stair[size]; stair[0] = 1; stair[1] = 2; for(int i=2; i<size; i++) { stair[i] = stair[i-1]+stair[i-2]; } printf("Result:%d\n", stair[size-1]); return 0; }