| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 608 人关注过本帖
标题:谁能帮帮我啊 我学到函数递归卡住了
只看楼主 加入收藏
chuexuezhe
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-9-27
收藏
 问题点数:0 回复次数:4 
谁能帮帮我啊 我学到函数递归卡住了
move(int n,int x,int y,int z)
{
    if(n==1)
      printf("%c-->%c\n",x,z);
    else
    {
      move(n-1,x,z,y);
      printf("%c-->%c\n",x,z);
      move(n-1,y,x,z);
    }
}
main()
{
    int h;
    printf("\ninput number:\n");
    scanf("%d",&h);
    printf("the step to moving %2d diskes:\n",h);
    move(h,'a','b','c');
} 这道题目是   一块板上有三根针,A,B,C。A针上套有64个大小不等的圆盘,大的在下,小的在上。如图5.4所示。要把这64个圆盘从A针移动C针上,每次只能移动一个圆盘,移动可以借助B针进行。但在任何时候,任何针上的圆盘都必须保持大盘在下,小盘在上。求移动的步骤。

我现在主要是
{
    if(n==1)
      printf("%c-->%c\n",x,z);
    else
    {
      move(n-1,x,z,y);
      printf("%c-->%c\n",x,z);
      move(n-1,y,x,z);
    } 在这卡住了哪位大哥能帮我详细的写下这的步骤 详细点的 我实在太笨了 弟弟在这真的感激不尽
搜索更多相关主题的帖子: 递归 函数 
2008-10-09 14:51
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
#include <stdio.h>
int i=0;
main()
{
   unsigned n;
   printf("Please enter the number of discs:");
   scanf("%d",&n);
   movedisc(n,'a','b','c');
   printf("\tTotal:%d\n",i);
}
movedisc(unsigned n,char fromneedle,char toneedle,char usingneedle)
{
   if(n==1)
     printf("%2d-(%2d):%c==>%c\n",++i,n,fromneedle,toneedle);
  else
  {
     movedisc(n-1,fromneedle,usingneedle,toneedle);
     printf("%2d-(%2d):%c==>%c\n",++i,n,fromneedle,toneedle);
     movedisc(n-1,usingneedle,toneedle,fromneedle);
  }
}

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-10-09 15:16
woshiyun
Rank: 1
等 级:新手上路
威 望:2
帖 子:348
专家分:0
注 册:2008-6-16
收藏
得分:0 
#include <stdio.h>
#define MOVE(X,Y) printf("%c-->%c\t", X, Y)

void hanno(int n, char A, char B, char C)
{
    if(n>1)
    {
        hanno(n-1, A, C, B);  //将位于A上n-1个盘,借助于C,移到B上。此时A上将只剩下最大一个盘,B上有n-1个盘,C空
        MOVE(A, C);           //移动A到C
        hanno(n-1, B, A, C);  //将位于B上n-1个盘,借助于A,移到C上。此时A空,B空,C上有n个盘
    }
    else
        MOVE(A, C);
}

int main()
{
    int n;
    scanf("%d", &n);
    hanno(n, 'A', 'B', 'C');  //将位于A上n个盘,借助于B,移到C上
    printf("\n");
    return 0;
}
2008-10-09 15:30
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
汉诺塔,在网上一搜一堆一堆的……
2008-10-09 19:10
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
楼上说的对啊

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-10-09 19:12
快速回复:谁能帮帮我啊 我学到函数递归卡住了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016922 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved