我在理解Python中的递归函数方面遇到了一些麻烦(好吧,我猜一般情况下)。我试着寻找答案,但也不确定如何寻找答案。
当我搜索时,以递归函数示例最常见:
def sfactorr(j):
if j == 1:
return 1
else:
return j * sfactorr(j-1)
每次函数大于1时,它再次启动,直到j == 1.但是当它达到1时,返回值不应该是1吗?显然,当你运行它时,你会得到整个函数的结果,但我似乎并不完全理解为什么会这样。
换句话说,它是如何返回正确的值而不是基本条件返回的值?
由于
答案 0 :(得分:1)
您必须完成这些步骤。
假设我们将3传递给该函数。
当函数首次运行时,j>因此,它不返回1,而是返回j * [用一个小于j调用的函数)。但它实际上无法返回,直到它调用的函数返回。
它继续这样做直到j为1.这是基本条件。当j为1时,1返回到它上面的函数。
因此。从j == 3开始:
(1) j == 3, returning j * the result of (2)
(2) j ==2, returning j * the result of (3)
(3) j == 1, returning 1
因此按顺序(1),(2),(3)调用函数,但按顺序(3),(2),(1)返回。
(3) returns 1
(2) takes the 1 from (3) and multiplies it by (2), resulting in 2. Then it returns that.
(1) takes the 2 from (2) and multiplies it by 3, resulting in 6. It returns that as a final value.
递归语句意味着函数全部折叠回自身,而不是只运行最后一个语句。