我想实现该程序,但是它会在每次函数调用时引发错误并运行无限循环。
class abc
{
public static void main(String[] args) {
int n=16;
calll(n);
}
static int calll(int n)
{
if(n>0)
{
n=n-5;
calll(n);
return n;
}
else
{
n=n+5;
calll(n);
return n;
}
}
}
答案 0 :(得分:1)
您的功能没有结束条件。
是否n大于5,您将运行calll函数,然后再次运行calll函数至无穷大。
您需要一个可以结束递归的条件,例如,将调用函数更改为此:
static int calll(int n)
{
if(n>0)
{
n=n-5;
calll(n);
return n;
}
else
{
return n;
}
}
但是,该函数仍然毫无意义,因为您实际上并不对n进行任何操作。请记住,您在主函数中定义的n永远不会被修改。