【发布时间】:2016-06-14 19:02:58
【问题描述】:
我仍然是一个尝试掌握递归的相对较新的程序员。我查看了各种关于它们如何工作的在线教程,它们看起来很容易理解。但是当我偶然发现这个问题时,我很难理解程序是如何运行的。
#include <stdlib.h>
#include <stdio.h>
void hanoi(int n);
int main (int argc, char *argv[]) {
hanoi(2);
}
void hanoi( int n ) {
printf("\n\n--------!n-------: %d\n\n", n);
if ( n > 0 ) {
hanoi ( n - 1 );
printf("\n\n--------#n---------: %d\n\n", n);
hanoi ( n - 1 );
printf("\n\n-------$n---------: %d\n\n", n);
}
}
输出
!n: 2
!n: 1
!n: 0
#n: 1
!n: 0
$n: 1
#n: 2
!n: 1
!n: 0
#n: 1
!n: 0
$n: 1
$n: 2
所以我希望有人可以逐步完成这个程序并帮助我了解递归的真正工作原理。
编辑:-对照片感到抱歉-
【问题讨论】:
-
请编辑您的问题,不要使用图片作为代码。将您的代码添加到问题中
-
请勿将代码发布为图片。相反,创建一个视频演练并将其上传到 Youtube。哦不,等等。