关于c:假如有n个台阶一次只能上1个台阶或2个台阶请问走到第n个台阶有几种走法

0次阅读

共计 673 个字符,预计需要花费 2 分钟才能阅读完成。

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;

}

正文完
 0