切披萨与河内塔问题(C语言)

切披萨:把一张披萨饼切n刀,最多能得到多少块饼?用C语言实现函数,输入参数为n,返回结果

int qie(int n)
{
    if (n == 0)
    {
        return 1;
    }
    else
    {
        return qie(n - 1) + n;
    }
}

河内塔问题:移动n层的塔,总的移动次数是多少?

int hannuo(int n)
{
    return pow(2, n) - 1;
}

或者

int hannuo2(int n)
{
    if (n == 1)
    {
        return 1;
    }
    else
    {
        return hannuo2(n - 1) * 2 + 1;
    }
}

void HanoiTower(int n, char source, char temp, char target)
{
    if (n < 1)
        return;
    if (1 == n)
    {
        printf("%c->%c,␣", source, target);
        return;
    }
    HanoiTower(n - 1, source, target, temp);
    printf("%c->%c,␣", source, target);
    HanoiTower(n - 1, temp, source, target);
    return;
}
    原文作者: 汉诺塔问题
    原文地址: https://blog.csdn.net/yin__ren/article/details/79118222
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞