服务器之家

服务器之家 > 正文

C语言递归之汉诺塔和青蛙跳台阶问题

时间:2021-10-29 15:49     来源/作者:一只当归

递归就是一个函数执行过程中调用自己,在c语言中有很多关于递归的经典问题,例如:斐波那契数列问题、汉诺塔问题等,在研究递归问题时我们要注意三点:
1.递归的结束条件
2.递归在每次进行过程中,都得离条件越来越近
3.相邻两次递归调用之间的关联关系

汉诺塔问题:

有三根杆子A, B, C。A杆上有N个(N > 1)穿孔圆盘, 盘的尺寸由下到上依次变小.要求按下列规则将所有圆盘移至C杆:
1.每次只能移动一个圆盘;
2.大盘不能叠在小盘上面,可将圆盘临时置于B杆, 也可将从A杆移出的圆盘重新移回A杆, 但都必须尊循上述两条规则。求移动的过程。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int step = 0; //设置全局变量step记录步数
void move(int i,char form,char to){
    printf("第%d步,将第%d个盘子从%c移动到%c\n", ++step,i,form, to);
}
void Hanio(int n,char a,char b,char c){
    if (n == 0)
    {
        return;
    }
    Hanio(n - 1,a,c,b); //第n-1个A柱上的盘子通过C柱移动到B柱
    move(n, a, c);  //将A柱上编号为n的盘子移动到C柱
    Hanio(n - 1, b, a, c); //再将B柱上的第n-1个盘子通过A柱移动到C柱
}
int main(){
        int n;
        printf("请输入汉诺塔中有多少个圆盘:\n");
        scanf("%d", &n);
        Hanio(n, 'A', 'B', 'C'); //将n个圆盘从A柱通过B柱移动到C柱
        system("pause");
        return 0;
}

运行结果:

C语言递归之汉诺塔和青蛙跳台阶问题

青蛙跳台阶问题:

一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
当n = 1,只有1中跳法;当n = 2时,有两种跳法;当n = 3 时,有3种跳法;当n = 4时,有5种跳法;当n = 5时,有8种跳法。可以总结为f(n)=f(n-1)+f(n-2),本质上与斐波那契数列相同。

?
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
int Frog(int n){
    if (n <= 2 && n >= 0)
    {
        return n;
    }
    else if (n < 0)
    {
        printf("您的输入错误\n");
        return n;
    }else
    {
        return Frog(n - 1) + Frog(n - 2);
    }
}
int main(){
        int n;
        printf("请输入有几级台阶:\n");
        scanf("%d", &n);
        int result = Frog(n);
        if(n >= 0){
            printf("青蛙有%d种跳法\n", result);
        }
        system("pause");
        return 0;
}

运行结果

C语言递归之汉诺塔和青蛙跳台阶问题

到此这篇关于C语言递归之汉诺塔问题和青蛙跳台阶问题的文章就介绍到这了,更多相关C语言递归汉诺塔青蛙跳台阶内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_45177279/article/details/115468273

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部