[英]C# recursive method
目前,我正尝试练习递归,但是我被卡住了。 目的是求和该数字的所有数字。 例如,方法的签名采用一个int参数。 此参数是数字(例如123)。 递归地,我应该总结1 + 2 + 3,并给出6的答案。
到目前为止,我尝试了:
(这可能没有意义,但是我尝试了很多)
public int sumofD(int n)
{
if (n == 0)
{ return 0; }
else
{
return n % 10 + sumofD(n-(n%10));
}
}
sumofD(n-(n%10))
使10
从n = 11
( 11-(11%10)
= 11-1
= 10
)。 这将导致您的递归方法永远不会结束。 您实际上并没有划分任何内容,因此循环是无限的。
简单地除以10就可以在这里完成工作:
sumofD(n / 10)
您做错了, n - (n%10)
将123变为123-3,即120
public int sumofD(int n)
{
if (n == 0)
{ return 0; }
else
{
return n % 10 + sumofD(n/10);
}
}
据我了解,如果结果超过一位,您还需要对结果求和。
所以99会给你9(9 + 9 = 18,8 + 1 = 9)
然后另一种方法是:
public int sumofD(int n)
{
string str = n.ToString();
int total = 0;
foreach (char c in str.ToCharArray())
{
total += int.Parse(c+"");
}
if (total > 9) total = sumofD(total);
return total;
}
如果只需要直接和(99给您18),则可以删除最后一个if行。
我重写了函数(的总和)。 我试过了
public int sumofD(int n)
{
if (n == 0)
{ return 0; }
else
{
return (n % 10 + sumofD(n / 10));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.