当前位置: 代码迷 >> Java相关 >> 一道recurrsion的问题
  详细解决方案

一道recurrsion的问题

热度:95   发布时间:2010-11-26 06:12:32.0
一道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  

----------------解决方案--------------------------------------------------------
用stack也可以, 先入后出
----------------解决方案--------------------------------------------------------
程序代码:
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());
        }
      
      
    }
         
}

----------------解决方案--------------------------------------------------------
用堆栈确实是个好办法,楼上写的那段代码是惠普的一个笔试题。
----------------解决方案--------------------------------------------------------
现在题目规定死了只能用recursion的方法做,不能用stack或者别的方法
----------------解决方案--------------------------------------------------------
以下是引用suckdog在2010-11-26 10:58:51的发言:

现在题目规定死了只能用recursion的方法做,不能用stack或者别的方法
recursion就是递归方法, 用于这题目不是最好的方法
----------------解决方案--------------------------------------------------------
我知道不是最好的方法,但是现在就是考怎么用recursion,所以必须用这个方法
----------------解决方案--------------------------------------------------------
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的方法,每次返回值为字符串的一个字符+方法的下一个返回值!
----------------解决方案--------------------------------------------------------
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;
  }
}
上课没事写的,没调试。
----------------解决方案--------------------------------------------------------
回复 楼主 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]);

        }
        
        
    }
}
----------------解决方案--------------------------------------------------------
  相关解决方案