这是“神经学家Matlab”一书中的一个例子。我不明白在每次递归之后,g得到一个新值的顺序或原因。我也不明白为什么最后一行代码中包含了"factorial2“。
以下是到文本的链接

基本上,我是在要求一个人把作者解释(用红色圈起来)这个函数是如何工作的,就好像他们是在向一个5岁的孩子解释这个概念和过程一样。我对编程很陌生。我以为我读了另一本书就明白了这是怎么回事,但现在这位作者的解释只会引起混乱。非常感谢任何能帮忙的人!
发布于 2015-02-03 01:53:01
递归方法的工作方式是,每次调用方法时,将一个较大的问题分解为较小的问题()。,这允许您将困难的问题分解;阶乘求和,将其分解为一系列较小的问题。
每个递归函数有两个部分:
1) 大小写:我们关心的最小值。通常这个值是0或1。
if (num == 1)
out = 1;
end2) 一般情况:一般情况是我们要调用的情况,直到我们到达基本情况为止。我们再次调用该函数,但这次比前面的函数开始时少1。这使我们能够朝着基本情况前进。
out = num + factorial(num-1);这个语句意味着我们首先要用比这个函数少1的调用函数;我们从3开始,下一个调用从2开始,之后的调用以1开始(这会触发我们的大小写!)
一旦达到我们的基本情况,方法“递归-退出”。这意味着它们向后反弹,返回到调用它的函数中,将其下面的函数中的所有数据都带回来!
,就是在这一点上,我们的求和实际上发生了.
一旦达到了原来的功能,我们就有了最后的求和。
例如,假设您需要前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的结果!
https://stackoverflow.com/questions/28289104
复制相似问题