gpt4 book ai didi

java - 使用递归更改数字中的数字

转载 作者:行者123 更新时间:2023-12-02 09:57:04 25 4
gpt4 key购买 nike

我为类作业制作了这个方法。计算任意给定数字中出现的“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);
}

0 会 = 1 27 会 = 36 依此类推。我将不胜感激所提供的任何帮助。

最佳答案

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

/**
* 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);
}

关于java - 使用递归更改数字中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55932631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com