gpt4 book ai didi

java - Java 中偶数索引位的求和

转载 作者:行者123 更新时间:2023-12-01 16:35:10 25 4
gpt4 key购买 nike

我尝试编写一个方法(为了好玩),使用 Java 递归对偶数位置的数字进行求和。例如,数字 23495 将返回 3+9 = 12。

我没有成功,希望得到提示或我做错了什么。

    int sumEven = 0;
int sumOdd = 0;
int i = 1;
    if (n == 0)
return sumEven;

if (n != 0) {

if (i % 2 == 0)
{
i++;
sumEven += n % 10;
}
else
{
i++;
sumOdd += n % 10;
}
}

return sumEven + getEven (n/=10);

最佳答案

问题是你想做的太多 - 看看我对问题的评论

递归方法需要一个输入,其中包含它需要处理的所有内容、一个返回值以及一个执行路径,在该路径中它会调用自身,直到发生某些情况,这意味着它不再需要调用自身 - 如果没有这一步,它就不会再调用自己了。将追索直到溢出堆栈

int sumEveryOtherDigit(int input){

if(input >= 100)
return input%10 + sumEveryOtherDigit(input/100);
else
return input%10;

}

这需要输入,如果有任何需要再次运行的点(如果输入至少为 100),则采用最右边的数字加上使用较小的数字再次运行本身

最终数字变得如此之小,以至于没有任何意义再次运行自身,因此它只是返回而不再次运行自身,这就是递归停止的方式

现在,从您对另一个答案的评论来看,您似乎想确定偶数和奇数为从左开始,因此我们需要从数字(1630)或除以十的数字(23495 -> 2349)开始 - 基本上为了开始递归,我们总是希望传入一个偶数位数的数字

int num = 23495;
int numOfDigits = (int)Math.log10(num)+ 1;

if(numOfDigits%2==0)
result = sumEveryOtherDigit(num);
else
result = sumEveryOtherDigit(num/10);

关于java - Java 中偶数索引位的求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61968318/

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