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;
}