首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更清晰地解释递归的函数级范围

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

Stack Overflow用户
提问于 2015-02-03 00:01:47
回答 1查看 164关注 0票数 1

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

以下是到文本的链接

基本上,我是在要求一个人把作者解释(用红色圈起来)这个函数是如何工作的,就好像他们是在向一个5岁的孩子解释这个概念和过程一样。我对编程很陌生。我以为我读了另一本书就明白了这是怎么回事,但现在这位作者的解释只会引起混乱。非常感谢任何能帮忙的人!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-03 01:53:01

递归方法的工作方式是,每次调用方法时,将一个较大的问题分解为较小的问题()。,这允许您将困难的问题分解;阶乘求和,将其分解为一系列较小的问题。

每个递归函数有两个部分:

1) 大小写:我们关心的最小值。通常这个值是0或1。

代码语言:javascript
复制
if (num == 1)
  out = 1;
end

2) 一般情况:一般情况是我们要调用的情况,直到我们到达基本情况为止。我们再次调用该函数,但这次比前面的函数开始时少1。这使我们能够朝着基本情况前进。

代码语言:javascript
复制
out = num + factorial(num-1);

这个语句意味着我们首先要用比这个函数少1的调用函数;我们从3开始,下一个调用从2开始,之后的调用以1开始(这会触发我们的大小写!)

一旦达到我们的基本情况,方法“递归-退出”。这意味着它们向后反弹,返回到调用它的函数中,将其下面的函数中的所有数据都带回来!

,就是在这一点上,我们的求和实际上发生了.

一旦达到了原来的功能,我们就有了最后的求和。

例如,假设您需要前3个整数的求和。第一个递归调用传递给数字3。

代码语言:javascript
复制
  function [out] = factorial(num)
     %//Base case
     if (num == 1)
        out = 1;
     end
  %//General case
  out = num + factorial(num-1);

遍历函数调用:

代码语言:javascript
复制
factorial(3); //Initial function call

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

这给了我们一个6的结果!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28289104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档