#define _CRT_SECURE_NO_WARNINGS 1//青蛙跳台阶,一次跳1层或2层,n层台阶有多少种跳法
#include <stdio.h>
int j(int x)//"计算阶乘" x为输入值
{
if (x >= 1)
{
return x * j(x - 1);
}
else
{
return 1;
}
}
int c(int n, int m)//"计算c(n,m)(排列组合)"
{
int c = j(n) / (j(m) * j(n - m));
return c;
}
int m1(int x)//"计算2最多的个数" x为层数
{
int s = 0;
if (x % 2 == 0)
{
s = x / 2;
}
else
{
s = (x - 1) / 2;
}
return s;
}
int qwq(int x,int y)//"递归计算有多少种跳法" x为2的最多个数,y为层数
{
if (x>=0)
{
int n = y - 2 * (x)+x;
int h = c(n, x); //核心部分
return h+qwq(x - 1, y);
}
else
{
return 0;
}
}
int main()//输入层数o,输出多少种跳法
{
int o;
printf("规则:青蛙跳台阶,一次跳1层或2层,n层台阶有多少种跳法\n层数:");
scanf("%d", &o);
printf("多少种跳法:%d\n", qwq(m1(o), o));
}
青蛙跳台阶,一次跳1层或2层,n层台阶有多少种跳法