吾爱姚吕婧妍 发表于 2018-11-27 21:00

11.27 小白的每日一C

本帖最后由 吾爱姚吕婧妍 于 2018-11-27 21:35 编辑



递归 逆序
#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语言
/*汉诺塔问题是指:一块板上有三根针 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 的值了




~零度 发表于 2018-11-27 21:13

本帖最后由 ~零度 于 2018-11-27 21:36 编辑

我记得写过这个代码,待会我发到这里。

算了,我刚刚看了我所有的作业没找到这个。但是找到一个变种汉诺塔问题的c++代码,你需要的话我可以分享到这里。

Aug.LuKai 发表于 2018-11-27 21:27

#include "stdafx.h"

int count=0;
void move(char A,char C)
{
        printf("%c->%c\n",A,C);
        count++;
}
       

void hnt(int n,char A,char B,char C)
{
        if(1==n)
        {
                move(A,C);
                }
        else
        {
                hnt(n-1,A,C,B);
        move(A,C);
        hnt(n-1,B,A,C);
                        }
}


int main(int argc, char* argv[])
{       
        hnt(3,'A','B','C');//3表示三层
        printf("count=%d\n",count);
        return 0;
}

samen 发表于 2018-11-27 21:39

这个以前也没有搞太明白。。但是好像没怎么在农实践中用过。

吾爱姚吕婧妍 发表于 2018-11-27 21:42

samen 发表于 2018-11-27 21:39
这个以前也没有搞太明白。。但是好像没怎么在农实践中用过。

好滴 这些东西可能就是培养一下思维吧

linuxprobe 发表于 2018-11-27 23:08

好难啊,学不会。

dhs347 发表于 2018-11-28 11:25

学习了,楼主。。。

xake 发表于 2018-11-28 20:56

主要就是了解一下递归是怎么回事 初学的时候

吾爱姚吕婧妍 发表于 2018-11-28 20:57

xake 发表于 2018-11-28 20:56
主要就是了解一下递归是怎么回事 初学的时候

好的 谢谢兄弟给的提醒

吾爱姚吕婧妍 发表于 2018-12-2 17:37

~零度 发表于 2018-11-27 21:13
我记得写过这个代码,待会我发到这里。

算了,我刚刚看了我所有的作业没找到这个。但是找到一个变种汉诺 ...

感谢感谢{:1_893:}{:1_893:}{:1_893:}
希望你能分享一下 最好是回帖不然忙的时候看不到 不好意思呀
页: [1] 2
查看完整版本: 11.27 小白的每日一C