青蛙跳台阶(C语言数学排列组合公式求解法)

题目:从前有一只青蛙他想跳台阶,有n级台阶,青蛙一次可以跳1级台阶,也可以跳2级台阶;问:该青蛙跳到第n级台阶一共有多少种跳法。


当只有跳一级台阶的方法跳时,总共跳n步,共有1次跳法                                

当用了一次跳二级台阶的方法跳时,总共跳n-1步,共有n-1次跳法     

当用了两次跳二级台阶的方法跳时,总共跳n-2步,共有((n-2)*(n-3))/(2*1)种跳法

当用了三次跳二级台阶的方法跳时,总共跳n-3步,共有((n-2)*(n-3)*(n-4))/(3*2*1)种跳法

代码:

复制代码
#include <stdio.h>
int Fac(int n)//求n的阶乘函数
{
    int ret = 1;
    for (int i = 1; i <= n; i++)
    {
        ret *= i;
    }
    return ret;
}
int C_n_i(int n, int i)//求排列组合函数
{
    if (i == 0||i==n)
    {
        return 1;
    }
    else
    {
        return Fac(n) / (Fac(i) * Fac(n - i));
    }
}
int main()
{
    //青蛙跳台阶问题
    //数学的排序问题
    //不用递归的解法
    int n;
    scanf("%d", &n);
    int sum = 0;
    for (int i = 0; i <= n / 2; i++)
    {
        sum += C_n_i(n-i,i);
    }
    printf("%d", sum);
    return 0;
}
复制代码

运行结果:

欢迎提出错误

posted on   不再遇见你  阅读(184)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示