一道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());
}
}
}
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的方法做,不能用stack或者别的方法
----------------解决方案--------------------------------------------------------
我知道不是最好的方法,但是现在就是考怎么用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]);
}
}
}
----------------解决方案--------------------------------------------------------