求上樓梯方法數的練習 (使用函式)-費波那契數列

#include<stdio.h>
unsigned int s(int);

int main(){
int n;
printf("N= ");
scanf("%d",&n);
printf("%d\n",s(n));
return 0;
}
unsigned int s(int n){
if(n<=2){
return n;
}
return s(n-1)+s(n-2);
}
//費伯納契數列
//演化方式就像拆成多少的2與1。
e,g:數值8
8→76→656→5456→43456→323456→212213256→21221212436→212212123236→212212122122154→2122121221221434→21221212212213234→212212122122121234→21221212212212122132→212212122122121221212 == 2+1+2+2+1+2+1+2+2+1+2+2+1+2+1+2+2+1+2+1+2 ==答案34
//費波那契數列
//關於費波那契數列,在一串數字中,每一項是前兩項的和。數學上的定義為:
//第 0 項 = 0
//第 1 項 = 1
//第 n 項 = 第 n-1 項 + 第 n-2 項
//ans= 函式(n-1)+函式(n-2)....條件n>2
//所以設定小於二的數字直接回傳該數字。
//給N數值3,n-1 call函式,經if回傳2,n-2 call函式,函式回傳1,故2+1=3,所以答案等於3。
//給4,n-1=3{(3-1=2),(3-2=1),2+1=3}
//n-2=2,if判定後回傳2,在和前面的(上一行)相加3+2等於5,組合答案為5

//給N數值6
//6-1=5
//5-1=4{4-1=3,(3-1=2;3-2=1);4-2=2;}3+2=5
//5-2=3{3-1=2;3-2=1}2+1=3
//6-2=4{4-1=3,(3-1=2,3-2=1;2+1=3);4-2=2};3+2=5
//所以答案5+3+5=13

留言