递归方法运行时候,为什么形参会一次比一次小?

例如 static int Method(int x) { if (x <= 1) { return x; } else { return x * Method(x - 1); } }
2025-04-25 08:32:03
推荐回答(1个)
回答1:

问这个问题还不如问:“什么时候用递归,为什么要用递归?”

简单的说,你的例子中,每次递归前都需要x-1,递归才会结束(递归出口),因为函数只有当x<=1时递归会终止,否则递归会无限循环下去,直到栈溢出。

从算法上看递归必须要有个结束循环的条件,另外一个就是满足需求。所以是否用x-1,或x+1或者其他步进算法就看你需要,但是递归函数必须有一个结束递归的条件判断标志。

当运算步骤事先不可知,运算过程存在嵌套,比如解析表达式,比如逐层遍历文件夹和文件(遍历节点、各种树)都需要用到递归。