VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 85|回复: 4

这个递归函数运行好慢输入50,几乎用了近半个小时还没有完,不知有无其他能提高效.

[复制链接]
11_avatar_middle
最佳答案
0 
在线会员 发表于 2020-2-26 21:10:01 | 显示全部楼层 |阅读模式
这个递归函数运行好慢,我输入50,几乎用了近半个小时还没有完,不知有无其他能提高效率的方法吗

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int m;
    void hanoi();
    printf("input the number of diskes:");
    scanf("%d",&m);
    printf("The step to moving %3d diskes:\n",m);
    hanoi(m,'A','B','C');
    return 0;
}
void move (getone,putone)
char getone,putone;
{


    printf("%c---->%c\n",getone,putone);


}
void hanoi(n,one,two,three)
char one ,two,three;
int n;
{
    if (n==1)move(one,three);
    else{
        hanoi(n-1,one,three,two);
        move(one,three);
        hanoi(n-1,two,one,three);
        }
}




上一篇:测试前13个数都对第14个数就不对
下一篇:c++控制台程序如何使用IWinHttpRequestPtr 新手 请赐教
77_avatar_middle
最佳答案
21 
online_vip 发表于 2020-2-26 22:28:50 | 显示全部楼层
递归这个东西本身就很耗费函数堆栈,如果层级太多的话估计直接栈溢出了。
所以算50层也太多了吧
11_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-2-26 23:56:53 | 显示全部楼层
递归这个东西很耗费时间,我开始输入23用了大约10多分钟,我想把数字增加一倍,想看看多久,结果用了很长时间,快1小时还没有完,所以就中断了。后来我想能不能用其它方法代替递归。
18_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-2-27 09:59:32 | 显示全部楼层
llq_999 发表于 2020-2-26 23:56
递归这个东西很耗费时间,我开始输入23用了大约10多分钟,我想把数字增加一倍,想看看多久,结果用了很长时 ...

可以试试迭代法,看看行不行
58_avatar_middle
最佳答案
26 
online_vip 发表于 2020-2-27 14:05:12 | 显示全部楼层
llq_999 发表于 2020-2-26 23:56
递归这个东西很耗费时间,我开始输入23用了大约10多分钟,我想把数字增加一倍,想看看多久,结果用了很长时 ...

需要一些算法了,建议不要纠结这些,你又不是搞研究的,多写一点实用性的程序。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-3-30 18:58

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表