更清晰地解释递归的函数级范围

clearer explanation of function level scope for recursion

这是书中的示例 'Matlab for Neuroscientists'。我不明白每次递归后 g 被赋予新值的顺序或原因。我也不明白为什么 "factorial2" 包含在最后一行代码中。

这里有一个link到正文

基本上,我要求某人 re-word 作者解释(用红色圈出)函数的工作原理,就好像他们在向 5 岁的孩子解释概念和过程一样。我是编程新手。我以为我通过阅读另一本书了解这是如何工作的,但现在这位作者的解释只会引起混乱。非常感谢任何能提供帮助的人!!

递归方法的工作原理是在每次调用该方法时将一个较大的问题分解成较小的问题这使您可以分解一个困难的问题;阶乘求和,转化为一系列较小的问题。

每个递归函数有两部分:
1) 基本情况:我们关心评估的最低值。通常这会变为零或一。

if (num == 1)
  out = 1;
end


2) 一般情况:一般情况是我们在到达基本情况之前要调用的情况。我们再次调用该函数,但这次比上一个函数开始时少 1。这使我们能够朝着基本情况努力。

out = num + factorial(num-1);

这个语句的意思是我们要首先调用比this函数少1的函数;我们从 3 开始,下一次调用从 2 开始,之后的调用从 1 开始(这触发了我们的基本情况!)

一旦达到我们的基本情况,方法"recurse-out"。这意味着它们向后反弹,回到调用它的函数中,从它下面的函数中获取所有数据!
正是在这一点上我们的求和实际上发生了。

一旦达到原始函数,我们就有了最终的求和。

例如,假设您想要前 3 个整数的总和。 第一个递归调用传递了数字 3.

  function [out] = factorial(num)
     %//Base case
     if (num == 1)
        out = 1;
     end
  %//General case
  out = num + factorial(num-1);

遍历函数调用:

factorial(3); //Initial function call

//Becomes..
factorial(1) + factorial(2) + factorial(3) = returned value

结果是 6!