我有一个关于递归函数的问题 .
我已经制作了这个小例子程序来计算整数中的单个数字:例如:123 = 6因为1 2 3 = 6 .
现在我用静态int和这个递归函数创建了它:
static int totalNumbers(int a)
{
if(a <= 0)
return sum;
else
{
sum += a % 10;
return totalNumbers(a/10);
}
}
这个功能就像魅力一样,但我的问题是,我可以在没有名为sum的静态int的情况下制作它吗?有没有办法可以在函数中定义一个整数和,让它们用本地var计算或者不可能?
亲切的问候,
5 回答
当然:
当然:
这个版本是尾递归的,但它不会给你任何Java .
当然,没有静态“和”变量更好 . 我会用这样的方式写它:
当然可以!
通过使用静态int属性,你错过了递归函数的点,一个最纯粹的数学意义上的函数,不依赖于外部值,你可以确定每次用相同的输入调用它时,它都会返回相同的输出 - 你不能说你的方法,每次用相同的输入调用它时会产生不同的结果,除非你手动将调用之间的外部静态int属性重置为零 .
例如,尝试连续两次或多次调用您的实现,如下所示:
明白了吗?