Java 通过递归得到的数字和
我正在尝试做一个递归函数,它应该返回数字的和。函数应该只有一个参数。到目前为止,我有这个Java 通过递归得到的数字和,java,function,recursion,sum,digit,Java,Function,Recursion,Sum,Digit,我正在尝试做一个递归函数,它应该返回数字的和。函数应该只有一个参数。到目前为止,我有这个 public int sumDigits(int n) { if(n%10 == n) // last digit remains return n; else{ int rightdigit; rightdigit = n%10; // taking out the right most digit return righ
public int sumDigits(int n) {
if(n%10 == n) // last digit remains
return n;
else{
int rightdigit;
rightdigit = n%10; // taking out the right most digit
return rightdigit + (n/10); // adding it to everything on left
}
}
该函数适用于某些值,特别是2位数字。但是它给出了一些非常奇怪的数值,比如730,当它应该是10的时候,它变成了73
我已经把它写在纸上了,但我不知道哪里出了问题。任何帮助都将不胜感激。您的方法不是递归的。它应该在最后一部分称自己为:
return rightdigit + sumDigits(n / 10);
这会将最右边的数字与最左边数字的递归求和数相加。您的方法不是递归的。它应该在最后一部分称自己为:
return rightdigit + sumDigits(n / 10);
这会将最右边的数字与最左边数字的递归求和数相加。您忘记调用sumDigits。
更改此行:
return rightdigit + (n / 10);
为此:
return rightdigit + sumDigits(n / 10);
你忘了给Summedits打电话了。
更改此行:
return rightdigit + (n / 10);
为此:
return rightdigit + sumDigits(n / 10);
实际上,您并不是在递归。您已经设置了基本情况,但是当递归地解决问题时,应该在函数中包含调用函数本身的代码
因此,缺少一行调用sumdights,参数较小
考虑递归soutlion的两个重要部分:
基本情况。这是递归的结束,在这一点上,您的递归将开始返回,在您创建一个和的情况下。
递归:递归函数将使用不同的参数(通常是问题的较小部分)调用自身。
请注意,您的问题非常符合这一点:if/else中有两个案例。您的基本情况设置得很好,现在在另一个分支中,您需要实际递归。您应该非常清楚地知道将调用放在哪里。您实际上并不是在递归。您已经设置了基本情况,但是当递归地解决问题时,应该在函数中包含调用函数本身的代码
因此,缺少一行调用sumdights,参数较小
考虑递归soutlion的两个重要部分:
基本情况。这是递归的结束,在这一点上,您的递归将开始返回,在您创建一个和的情况下。
递归:递归函数将使用不同的参数(通常是问题的较小部分)调用自身。
请注意,您的问题非常符合这一点:if/else中有两个案例。您的基本情况设置得很好,现在在另一个分支中,您需要实际递归。您应该非常清楚地知道将调用放在哪里。这不会递归,它不会调用自己。这不会递归,它不会调用自己