请解释递归方法的工作原理? 这意味着调用堆栈的工作
class rec
{
public static void func(int i)
{
if (i>=1)
{
System.out.println(i);
func(i-1);
System.out.println(i);
}
}
public static void main(String args[])
{
func(5);
}
}
答案 0 :(得分:1)
这种递归可以在不进入无限“循环”的情况下运行,因为在每次递归调用中i
值都会减少 - 一个更大的问题会被分解为更小的问题,直到它最终被解决。
首先你传入5,它满足条件,再做一次递归调用:
func(5) --> func(4)
你传入4,它满足条件,再做一次递归调用等等:
func(5) --> func(4) --> func(3) --> func(2) --> func(1)
当方法完成任务时,返回调用点,从而开始从堆栈中弹出。
print(1) --> print(2) --> print(3) --> print(4) --> print(5) --> back to main().
如果您更正了错误,您就可以运行并产生以下结果:
5
4
3
2
1
1
2
3
4
5
回复您的评论:它可以显示5432112345
,因为您在方法中执行了System.out.println
!您无需返回值即可打印这些数字。
答案 1 :(得分:1)