好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 吾爱姚吕婧妍 于 2018-11-27 21:35 编辑
递归 逆序
[Asm] 纯文本查看 复制代码 #include<stdio.h>
void reverse(int n);
int main()
{
int n;
printf("Inter a number you want to : ");
scanf("%d",&n);
reverse(n);
return 0;
}
void reverse(int n)
{
if(n<=9)
printf("%d",n);
else
{
printf("%d",n%10);
reverse(n/10);
}
}
// 汉诺塔问题 一个明白算法 较难理解的c语言
[Asm] 纯文本查看 复制代码 /*汉诺塔问题是指:一块板上有三根针 A、B、C。
A 针上套有 64 个大小不等的圆盘,按照大的在下、小的在上的顺序排列,要把这 64 个圆盘从 A 针移动到 C 针上,每次只能移
动一个圆盘,移动过程可以借助 B 针。但在任何时候,任何针上的圆盘都必须保持大盘在下,小盘在上。从键盘输入需移动的圆盘个数,给出移动的过程。*/
// 这里 A是搬动源 B是搬动目的 C是中间过度
#include<stdio.h>
void hanio(int n,char a,char b,char c);
int main()
{
int n;
printf("You want to move : ");
scanf("%d",&n);
hanio(n,'A','B','C');
return 0;
}
void hanio(int n,char a,char b,char c)
{
if(n==1)
printf("%c-->%c\n",a,b);
else
{
hanio(n-1,a,c,b);
printf("%c-->%c\n",a,b);
hanio(n-1,c,b,a);
}
}
// 这个问题 可以看着 原理来讲 有 三个 盘 A是搬动源 B是搬动目的 C是中间过度
// 其实就是A中是按由大到小 自下向上排序 它的目的是将其移动到 另一个盘C上 并且 每次只能移动一个 还保证每个盘都是大的在下 小的在上
// 如果只有三个 那么首先a-->b a-->c b-->c a-->b c-->a c-->b a-->b
// 或者你自己想当n=3 首先要怎么办 然后你的函数 需要怎么变化 你就知道 为什么 它要改变 a,b,c 的值了
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|