java - 对Java中的偶数索引位置求和
问题描述
我尝试编写一种方法(用于踢球),该方法可以使用 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);
解决方案
问题是你试图做太多 - 看看我对 Q 的评论
递归方法需要一个输入,该输入包含它需要使用的所有内容、一个返回值和一个执行路径,在该路径中它调用自己直到发生某些事情,这意味着它不再需要调用自己——没有这个位,它将求助直到它溢出堆栈
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);
推荐阅读
- javascript - 导入和导出外部 javascript 代码
- visual-studio-code - Azure 数据块笔记本的 VSO 代码
- api - 从异步方法获取数据并将其添加到颤振中的另一个异步方法时出现问题
- javascript - 如何在本地存储(Vue)中保存当前语言(i18n)
- mysql - 对来自 3 个 SQL 表的数据进行分组
- php - WordPress 将 jQuery 移动到页脚,但依赖于它的脚本在它之前加载
- java - java中列表上的同步块
- c - 如何在 C 中识别 OCaml 可扩展变体类型值?
- vulkan - Vulkan 中先前子通道的输入附件
- python - UnicodeDecodeError:“ascii”编解码器无法解码位置 0 的字节 0xa7:不在序数范围内 (128)