Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用递归更改数字中的数字_Java - Fatal编程技术网

Java 使用递归更改数字中的数字

Java 使用递归更改数字中的数字,java,Java,我在课堂上做了一个作业。计算任何给定数字中出现的“1”的数目。我想在此基础上进一步讨论,学习如何取一个数字,如果它是偶数,则向它添加一个数字。如果它是奇数,则使用递归从中减去一,并返回更改后的数字 public static int countOnes(int n){ if(n < 0){ return countOnes(n*-1); } if(n == 0){ return 0; } if(n%10 == 1){

我在课堂上做了一个作业。计算任何给定数字中出现的“1”的数目。我想在此基础上进一步讨论,学习如何取一个数字,如果它是偶数,则向它添加一个数字。如果它是奇数,则使用递归从中减去一,并返回更改后的数字

public static int countOnes(int n){
    if(n < 0){
        return countOnes(n*-1);
    }
    if(n == 0){
        return 0;
    }
    if(n%10 == 1){
        return 1 + countOnes(n/10);
    }else 
        return countOnes(n/10);
}
公共静态int countone(int n){
if(n<0){
返回计数(n*-1);
}
如果(n==0){
返回0;
}
如果(n%10==1){
返回1+countone(n/10);
}否则
返回计数(n/10);
}

0将=1 27将=36,依此类推。如果您能提供任何帮助,我将不胜感激。

您经常会发现,在递归解决方案中使用私有方法会使代码更加清晰

/**
 * Twiddles one digit.
 */
private static int twiddleDigit(int n) {
    return (n & 1) == 1 ? n - 1 : n + 1;
}

/**
 * Adds one to digits that are even, subtracts one from digits that are odd.
 */
public static int twiddleDigits(int n) {
    if (n < 10) return twiddleDigit(n);
    return twiddleDigits(n / 10) * 10 + twiddleDigit(n % 10);
}
/**
*旋转一个数字。
*/
私有静态int twiddleDigit(int n){
收益率(n&1)==1?n-1:n+1;
}
/**
*偶数数字加一,奇数数字减一。
*/
公共静态int twidleDigits(int n){
如果(n<10)返回twiddleDigit(n);
返回twiddleDigits(n/10)*10+twiddleDigit(n%10);
}

不清楚您发布的代码有什么问题。9将是8@and yturner我发布的代码没有问题。我只是给出了一些参考,说明了为什么我决定尝试做我正在尝试做的事情@在数字27中,1s 36的数字是多少?我一点也不明白。您的描述与代码完全不匹配。代码中没有奇数校验,只有一个“=1 mod 10”校验。@MarkJeronimus代码有误导性。它与OP所问的问题无关,除了OP编写的问题之外,它是递归的,OP所问的是如何递归地解决问题。