这应该是我学习C语言过程中遇到过的第一个难懂的题目,最近刚刚学完函数这一章节,对于定义函数的问题,还处在一知半解的阶段,我遇到了递归调用这一节中的经典题目,汉诺塔问题。
在Hanno函数中
当n为偶数时第一步都是A-->B
当n为奇数时第一步都是A-->C
void Hanno(int n, char a, char b, char c)
{
if (n == 1)
move(a, c);
else
{
Hanno(n - 1, a, c, b);
move(a, c);
Hanno(n - 1, b, a, c);
}
在做题的过程中一直不太理解实参的变换
每一层递归中实参B,C的值一直在变换
当我看到这图时一下子就恍然大悟
整体程序
#include <stdio.h>
int cnt = 0;
void move(char a, char b);
void Hanno(int n, char a, char b, char c);
int main()
{
int n;
char a, b, c;
scanf("%d %c %c %c", &n, &a, &b, &c);