标题:递归代码出错,实在搞不懂
只看楼主
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
结帖率:100%
已结贴  问题点数:30 回复次数:4 
递归代码出错,实在搞不懂
如下是一道经典的题目:
汉诺塔传说
曾有一个印度的传说:在世界中心贝拿勒斯的圣庙里,一块黄铜板上插着三根宝石针(编号分别为AA,BB和CC)。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的nn片金片,这就是所谓的汉诺塔。

有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。

假设nn片金片一开始都在AA柱上,请给出一个移动序列,最后将这些金片移动到CC柱上。

输入格式

第一行:单个整数nn

输出格式

若干行:格式(待定义)

例子
Input
3
复制一下
Output
1:A-->C
2:A-->B
1:C-->B
3:A-->C
1:B-->A
2:B-->C
1:A-->C
复制一下

我的代码:
程序代码:
#include<iostream>
using namespace std;
void f(int n,char x,char y,char z){
    if(n==0)return;
    f(n-1,x,z,y);
    cout<<n<<":"<<x<<"-->"<<z<<endl;
    f(n-1,y,x,z);
}
int main(){
    int a;
    char x='A',y='B',z='C';
    cin>>a;
    cout<<f(a,x,y,z);
    return 0;
}

数据显示编译错误
出错内容:    [Error] no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'void')
请教大神这是怎么回事?

[此贴子已经被作者于2020-2-19 19:39编辑过]

搜索更多相关主题的帖子: 出错 std char 代码 移动 
2020-02-19 19:37
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:30 
cout<<f(a,x,y,z);
这句话有问题啊,cout的入参是个无返回值函数的返回值?

剑栈风樯各苦辛,别时冰雪到时春
2020-02-19 19:41
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 

2020-02-19 19:59
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
分全给你了,谢谢解答。

2020-02-19 20:00
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
答案也错了,显示答案错误

2020-02-19 20:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499307-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.292611 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved