这是神经科学家的书#Matlab中的一个例子。我不理解每次递归后g被赋予新值的顺序或原因。我也不明白为什么" factorial2"包含在最后一行代码中。
这是指向文本的链接
基本上,我要求某人重新说明作者如何运作的解释(用红色圈出),就像他们向5岁的孩子解释概念和过程一样。我对编程很陌生。我以为我理解这是如何通过阅读另一本书来解决的,但现在这位作者的解释只会导致混乱。非常感谢任何可以帮助的人!!
答案 0 :(得分:0)
递归方法的工作方法是,每次调用方法时,将较大的问题分解为较小的问题。这可以让您打破困难的问题;一个因子总和,成为一系列较小的问题。
每个递归函数有两部分:
1)基本情况:我们关心评估的最低值。通常这会变为零或一。
if (num == 1)
out = 1;
end
2)一般情况:一般情况是在我们达到基本情况之前我们要打电话的情况。我们再次调用该函数,但这次比前一个函数少了1个。这使我们能够走向基本案例。
out = num + factorial(num-1);
这句话意味着我们将首先调用该函数,其中的函数比此函数少1;我们从三开始,下一个调用以两个开始,之后的调用以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的结果!