hanoi塔问题——C语言——源程序分析
//递归 hanoi塔问题
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n;//n个盘子
printf("请输入盘子数:");
scanf("%d",&n);
int hanoi(int n,char A,char B,char C);
hanoi( n,'A','B','C');
system("pause");
return 0;
}
void hanoi(int n,char A,char B,char C)
{
if(n==1)
printf("%c-->%c\n",A,C) ;//注意,这里A-->C,是参数
else
{
hanoi(n-1,A,C,B);//这里调用 A-->C传递的是实参
printf("A-->C\n");
hanoi(n-1,B,A,C);
}
return;
}
hanoi塔问题——C++——源程序分析
//汉诺塔问题递归算法2019/3/14 gml
#include<iostream>
using namespace std;
int main(void)
{
int n; //n个盘子问题
int hanoi(int n,char A,char B,char C);
cin>>n;
hanoi(n,'A','B','C');//以B为媒介进行移动
return 0;-
}
void hanoi(int n,char A,char B,char C )
{
if(n==1)
cout<<A<<"->"<<C<<" ";//这里调用 A-->C传递的是实参
else
{hanoi(n-1,A,C,B);
cout<<A<<"->"<<C<<" ";
hanoi(n-1,B,A,C);
}
}
主要学到了递归的算法,以及弄清了实参传递与形参无关。