版权声明:转载请注明出处 https://blog.csdn.net/Hanoi_ahoj/article/details/83548152
题目
分析
刚开始认为左脚右脚也有关系,仔细读了遍题,看了下网上的分析,才明白。
简单描述下问题:有39级台阶,每次可以上一个或者两个,走完台阶刚好走的是偶数步有多少种走法。
类似问题:青蛙跳台阶问题
先不考虑是偶数步还是奇数步,看看每次走一个台阶或两个台阶有多少种走法,设台阶个数为n。
- 第一步走一个台阶,则剩下n-1个台阶的走法
- 第一步走两个台阶,剩下n-2个台阶的走法
- 当n = 1时,只有一种走法,那就是走一个台阶
- 当n = 2时,两种走法,可以一次上去,也可以一个一个上去
- n = 0时,0种走法
列出公式:
再看问题要求:计算走完台阶后刚好是偶数步有多少种走法,需要再加一个变量来记录步数,还需要一个变量来记录走法数量,当步数为偶数时,走法➕1⃣️。
码儿:
#include <stdio.h>
int count = 0; // 走法计数器
void fun(int taijie, int bushu) // 台阶,步数
{
if(taijie < 0)
{
return;
}
if(taijie == 0)
{
if(bushu%2 == 0)
{
count++;
}
return;
}
fun(taijie-1, bushu+1);
fun(taijie-2, bushu+1);
}
int main(int argc, const char * argv[])
{
fun(39, 0); // 台阶,步数
printf("%d\n", count);
return 0;
}