【C语言初阶】函数续

一、汉诺塔问题

将A杆上的盘子移动到C杆上,规则为:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。

【C语言初阶】函数续_第1张图片

 具体步骤为:

(1)将n-1个盘子从A移动到B;

(2)将第n个盘子从A移动到C;

(3)将n-1个盘子从B移动到C。

#define _CRT_SECURE_NO_WARNINGS 1


#include 

void move(int x, int y)
{
    printf("%c->%c\n", x, y);
}

void hanoi(int n, char a, char b, char c)
{
    if (n == 1)
    {
        move(a, c);
    }
    else
    {
        hanoi(n - 1, a, c, b);
        move(a, c);
        hanoi(n - 1, b, a, c);
    }
}

int main()
{
    int n = 0;
    scanf("%d", &n);
    hanoi(n, 'A', 'B', 'C');
    return 0;
}

二、青蛙跳台阶问题

 (1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。设台阶数为N

a.当N=1时,青蛙有一种跳法

b.当N=2时,有2种跳法

c.当N=3时,有3种方法

d.当N=4时,有5种方法

代码如下

#define _CRT_SECURE_NO_WARNINGS 1

#include 

int forg(int n)
{
    if (n == 1)
    {
        return 1;
    }
    if (n == 2)
    {
        return 2;
    }
    return forg(n - 1) + forg(n - 2);
}

int main()
{
    int n;
    scanf("%d", &n);
    int ways = forg(n);
    printf("%d\n", ways);
    return 0;
}

你可能感兴趣的:(C语言,c语言,算法)