如何在递归中创建数组?

时间:2012-10-17 03:34:16

标签: java recursion

这是来自学校的作业问题:创建一个名为toBinary的递归方法,它将一个整数作为参数,并以二进制形式输出等效项。

这是我的代码:

import java.util.*;
class MethodAssign6{
static void toBinary(int a){
    if(a==0){
        System.out.print("theArrayOrStringIWant");
    }
    else{
        System.out.println(a%2);
        toBinary(a/2);
    }
}
public static void main(String[]args){
    toBinary(24);
}
}

正如您所看到的,当问题只希望我将一个整数作为参数时,我不知道如何创建一个数组来保存所有的%2值。任何人请帮助我,我非常感谢。

4 个答案:

答案 0 :(得分:3)

我认为你走在正确的轨道上 - 但是你现在的方法会向后打印这个数字。尝试进行递归调用,然后然后打印:

static void toBinary(int a){
    if(a!=0) {
        toBinary(a/2);
        System.out.print(a%2);
    }
}

您还可以使用String获得类似的效果:

static String toBinary(int a){
    if(a==0) {
        return "";
    }
    else {
        return toBinary(a/2) + (a%2);
    }
}

public static void main(String[]args){
    System.out.println(toBinary(24));
}

答案 1 :(得分:1)

通常,像这样的递归方法将具有公共方法以及用于完成计算的私有方法。因此public方法接受一个整数,然后设置数组以保存值。私有数组采用整数,也使用当前数组,因此它可以将它的值添加到数组中。最后,当private方法返回时,public方法将解析数组并返回结果。

答案 2 :(得分:1)

如果您只需打印这些位,则实际上并不需要将它们保存在数组中。您可以随时使用System.out.print。确保你注意打印电话的顺序和递归电话,以免你向后打印号码。

答案 3 :(得分:-1)

// static String[] valsbyte = new String[10]; // global variable if you return a string
static byte[] valsbyte = new byte[10]; // global variable


// static String[] toBinary(int a){ // if you return a string
static byte[] toBinary(int a){
n++;
if(n>10){ // check recursion to jump over process and internal method call


// valsbyte[n] = a%2; // if you reurn a string

valsbyte[n] = new Integer(ax).byteValue(); // convert to byte



//LAST LINE OF METHOD
return valsbyte[n];