C#递归方法

Ale*_*lex 1 c# recursion

现在我正在尝试递归,但我被卡住了.目的是总结数字的所有数字.例如,方法的签名采用一个int参数.此参数是数字(例如123).递归地我应该总结1 + 2 + 3,并给出6的答案.

到目前为止我试过:

(这可能没有意义,但我尝试了很多)

 public int sumofD(int n)
 {
         if (n == 0)
         { return 0; }
         else
         {
               return  n % 10 + sumofD(n-(n%10));
         }
 }
Run Code Online (Sandbox Code Playgroud)

Pat*_*man 5

sumofD(n-(n%10))使得10n = 11(11-(11%10)= 11-1= 10).这将导致您的递归方法永远不会结束.你实际上并没有划分任何东西,所以循环是无止境的.

简单地用10除以将完成这项工作:

sumofD(n / 10)
Run Code Online (Sandbox Code Playgroud)