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中有两个案例。您的基本情况设置得很好,现在在另一个分支中,您需要实际递归。您应该非常清楚地知道将调用放在哪里。

这不会递归,它不会调用自己。这不会递归,它不会调用自己