2023王道作業week4_day12————走樓梯
1.題目:
假如有n個台階,一次只能上1個台階或2個台階,請問走到第n個台階有幾種走法?為便於讀者理解題意,這裏舉例説明如下:假如有3個台階,那麼總計就有3種走法:第一種為每次上1個台階,上3次;第二種為先上2個台階,再上1個台階;第三種為先上1個台階,再上2個台階。輸入為n,輸出為走到第n個台階有幾種走法
2.思路
設台階為n個
當n=1時,走法為1
當n=2時,走法為2,1+1或2
當為n個時,相當於在n-1這個台階走一步或者在n-2這個台階走兩兩步
所以n個台階相當於n-1個台階的走法加上n-2個台階的走法
遞歸函數 :
ways(n) = ways(n-1) + ways(n-2);
遞歸出口:
n=1 return 1;
n=2 return 2;
### 代碼實現
//假如有n個台階,一次只能上1個台階或2個台階,請問走到第n個台階有幾種走法?
//為便於讀者理解題意,這裏舉例説明如下:假如有3個台階,那麼總計就有3種走法:第一種為每次上1個台階,上3次;第二種為先上2個台階,再上1個台階;第三種為先上1個台階,再上2個台階。輸入為n,輸出為走到第n個台階有幾種走法
include<stdio.h>
int ways(int n)
{
if (n == 1)
{
return 1;
}
if (n == 2)
{
return 2;
}
return ways(n - 1) + ways(n - 2);
}
int main()
{
int n;
scanf("%d", &n);
int result = ways(n);
printf("%d\n", result);
return 0;
}