動態

詳情 返回 返回

假如有n個台階,一次只能上1個台階或2個台階,請問走到第n個台階有幾種走法? - 動態 詳情

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;

}

Add a new 評論

Some HTML is okay.