| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 940 人关注过本帖
标题:一道recurrsion的问题
只看楼主 加入收藏
suckdog
Rank: 1
等 级:新手上路
帖 子:130
专家分:0
注 册:2007-9-19
结帖率:41.67%
收藏
已结贴  问题点数:20 回复次数:9 
一道recurrsion的问题
用recurrsion的方式打印数字, 比如输入是:12345, 打印:12345, 为什么我的程序出错,大家帮我看看,谢谢
另外如果倒过来打印,应该怎么弄? 打印:54321

import java.util.Scanner;
import java.util.StringTokenizer;

public class recurrsionPrint
{
   public static void main(String[] args)
    {
       String num;
      char[] array;
        
        Scanner keyboard=new Scanner(System.in);
        
        System.out.print("Enter your numbers: ");
        num=keyboard.nextLine();
        
        for(int i=0; i<num.length(); i++)
        {
           array[i]=num.charAt(i);
        }
        System.out.println(leftToRight(array, 0));
    }
   
    public static int[] leftToRight(char[] number, int index)
    {
       String num;  
        if(number.length==0)
           System.out.println("Empty array.");
        else if(number.length==1)
           num=number[0];
        else if(index<number.length)
        {
           leftToRight(number, index++);
        }
        return num;
    }
           
}
搜索更多相关主题的帖子: recurrsion 
2010-11-26 06:12
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:7 
用stack也可以, 先入后出

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-11-26 08:12
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
程序代码:
import java.util.Scanner;
import java.util.Stack;

public class RecurrsionPrint
{
   public static void main(String[] args)
    {
       String num;
       
        Scanner keyboard=new Scanner(System.in);
       
        System.out.print("Enter your numbers: ");
        num=keyboard.nextLine();
       
        Stack<Character> stack = new Stack<Character>();

        for(int i =0; i<num.length();i++)
        {
            stack.push(num.charAt(i));
        }

        while(!stack.empty())
        {
            System.out.print(stack.pop());
        }
       
       
    }
          
}

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-11-26 08:37
流星雨
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:JAVA风暴
等 级:版主
威 望:43
帖 子:1854
专家分:1868
注 册:2004-5-30
收藏
得分:7 
用堆栈确实是个好办法,楼上写的那段代码是惠普的一个笔试题。

感谢你们带我找到星空下美丽神话,无论经历多少苦痛也不放弃的梦;插上希望翅膀乘风我和你们飞翔,飞过海天尽头携手把梦想实现.....
2010-11-26 10:06
suckdog
Rank: 1
等 级:新手上路
帖 子:130
专家分:0
注 册:2007-9-19
收藏
得分:0 
现在题目规定死了只能用recursion的方法做,不能用stack或者别的方法
2010-11-26 10:58
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
以下是引用suckdog在2010-11-26 10:58:51的发言:

现在题目规定死了只能用recursion的方法做,不能用stack或者别的方法
recursion就是递归方法, 用于这题目不是最好的方法

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-11-26 11:22
suckdog
Rank: 1
等 级:新手上路
帖 子:130
专家分:0
注 册:2007-9-19
收藏
得分:0 
我知道不是最好的方法,但是现在就是考怎么用recursion,所以必须用这个方法
2010-11-27 02:53
冰雪天
Rank: 2
来 自:陕西咸阳
等 级:论坛游民
帖 子:60
专家分:34
注 册:2009-9-4
收藏
得分:7 
import java.util.Scanner;
import java.util.StringTokenizer;

public class RecurrsionPrint
{  
     static String printString = "";
   public static void rightToLeft(String s1, int i)
   {  
        String number = s1;
        int index = i;
      if(index == 0){
       printString += number.charAt(index);
       System.out.println("complete!") ;
      }
      else
        {
            printString += number.charAt(index);
          index--;
          rightToLeft(number,index);
        }
   }
        
   public static void main(String[] args)
    {
        String num;
        int length;
        Scanner keyboard=new Scanner(System.in);
        
        System.out.print("Enter your numbers: ");
        num=keyboard.nextLine();
        length = num.length() - 1;
        rightToLeft(num, length);
        System.out.println(printString);
    }
           
}
还可以编一个返回string的方法,每次返回值为字符串的一个字符+方法的下一个返回值!

我愛滑板!!!
2010-11-29 22:08
冰雪天
Rank: 2
来 自:陕西咸阳
等 级:论坛游民
帖 子:60
专家分:34
注 册:2009-9-4
收藏
得分:0 
String leftToRight(String s,int index){         //由左至右

  String s1 = "";
  if(s.length()==0){
      System.out.println("empty string!");
      return s1;
  }
  elseif(index == s.length())
    return s.charAt(index).toString();
  else{
      s1 = s.charAr(index).toString()+ leftToRight(s,++index);
      return s1;
  }
}      
String rightToLeft(String s, int index){   //由右至左
    String s1 ="";
    if(s.length()==0){
       System.out.println("empty string!");
       return null;
    }
   elseif(index==0)
      return s.charAt(0).toString();
  else{
     s1 = s.charAt(index).toString() + rightToLeft(s,--index);
    return s1;
  }
}
上课没事写的,没调试。

我愛滑板!!!
2010-11-30 12:38
dengjinbao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:64
专家分:119
注 册:2011-3-22
收藏
得分:0 
回复 楼主 suckdog
import java.util.Scanner;
class Recurrsion
{
    public static void main(String[] args)
    {
        String number;
        int length;
        int i;
        //char[] array = new char [100];
        Scanner in = new Scanner(System.in);
        System.out.print("Enter you number:");
        number = in.nextLine();
        length = number.length();
        char[] array = number.toCharArray();
        for (i=0;i<length ;i++ )
        {
            System.out.print(array[i]);

        }
        
        
    }
}
2011-03-23 22:57
快速回复:一道recurrsion的问题
数据加载中...
 
   



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

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