正在卓尼小乱 发表于 2017-9-2 17:27:04

在作为函数参数的时候,为什么n--传递值无效。

#include<stdio.h>

void hanoi(int n,char a,char b,char c);

void main(void)
{
        int n;
        char a='A',b='B',c='C';

        puts("请输入汉诺塔的层数:");
        scanf("%d",&n);

        hanoi(n,a,b,c);
}

void hanoi(int n,char a,char b,char c)
{
        if(1==n)
        {
                printf("%c-->%c\n",a,c);
        }
        else
        {
                hanoi(n-1,a,c,b);
                printf("%c-->%c\n",a,c);
                hanoi(n-1,b,a,c);
        }
}

如代码,如题目所问。
还有关于汉诺塔的问题,if(1==n)不是表示它只有当层数n为1的时候才能动用吗?为什么下面的else内,又多了一个printf的打印?我清楚它们的功能,也自己推演过,知道大概原理,只求一个更好的理解方式,如果没有,请忽视这个问题。谢谢。

ba21 发表于 2017-9-2 17:31:45

汉诺塔 移动的3个步骤
页: [1]
查看完整版本: 在作为函数参数的时候,为什么n--传递值无效。