了解 DART 中的递归函数

2024-03-18

我无法理解这个递归函数的代码。我是 DART 编程新手。我了解递归函数的作用,但我在理解编程语法时遇到问题。

int sum(List<int> numberList, int index) {
  if (index < 0) {
    return 0;
  } else {
    return numberList[index] + sum(numberList, index - 1);
  }
}

main() {
  // Driver Code
  var result = sum([1, 2, 3, 4, 5], 4);
  print(result);
}

问题:每个步骤的值存储在哪里 - 第 5 行第一遍的结果是否等于从第 11 行输入的 9。结果 9 的值存储在哪里?该函数如何知道在第二遍中添加 9 + 3?

递归函数是否具有每次传递生成的值的“内部存储器”?

我对编程语言的理解是 var result 将参数传递给 sum 函数。

sum 函数执行 if-else 命令,直到索引值为 0,即执行了 4 次。在第一遍中,返回命令创建值 9(5 + 4,因为索引的值为 5,索引 1 的值为 4)。

我的困惑由此开始。 sum 函数现在将执行第二次 if-else 传递并再次执行 return 命令。

现在 numberList[index] 的初始值需要为 9,sum(numberList, index - 1) 的值需要为需要为 3,才能得到 9 + 3 = 12。额外的 2 遍得到 12 + 2 = 14 和 14 + 1 = 15 的预期结果。

我的问题是“numberList[index]”中的索引值(如果确实如此)如何变化。索引值定义为4。这是递归函数的内部逻辑还是我完全误解了编程语法?我希望我们有一个“临时”变量来表示结果,该变量随着每次传递而增加。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 DART 中的递归函数 的相关文章

  • 为什么 dart 不允许方法重载?

    我尝试在一些 dart 代码中使用方法重载 并很快了解到 dart 中不提供重载 我的问题是 为什么不提供 推荐的替代方案是什么 是否有标准的命名约定 因为执行相同操作但具有不同输入的方法必须具有不同的名称 使用命名参数然后检查调用者是否提
  • 如何设置 dart objectbox 并预填充本地数据库?

    我想用 Flutter 设置一个 ObjectBox 数据库 我想用值预先填充数据库文件 安装应用程序时 数据库文件将被复制并由应用程序使用 我希望能够继续提供架构迁移 是否可以 如何建立这种类型的架构 你有什么例子吗 SOLUTION 通
  • 添加对 json 数据的“Future”api 调用作为无限滚动 Flutter Gallery 示例项目

    尝试学习新的 flutter 框架 看起来非常有前途 完成所有在线演示后 我现在尝试将外部数据添加到 pesto 部分中的 flutter gallery 示例项目中 这些数据可以通过每 10 个项目调用一次新的 Future 数据来无限滚
  • 如何获取调用函数的“this”值?

    如果我有一个这样的函数 function foo this console log this function bar bar prototype func function foo this var test new bar test f
  • 用于 Flutter 原生广告的 Objective-C 的 Swift 等效项

    我想为我的 Flutter 项目实现原生广告 它使用 Swift 而不是 Objective C https developers google com admob flutter native https developers googl
  • Flutter - 每次应用程序重新启动后保留变量的值

    在我的一页上 我希望我的用户从一个变量上的默认文本开始 codeDialog 然后我希望他们更改该文本 之后他们编写的文本将成为我的新默认文本 遗憾的是我无法让它发挥作用 现在 当我重新启动应用程序并打开该屏幕时 它会重置为null 我认为
  • Dart 包的条件导入/代码

    有没有办法根据 Dart 中的环境标志或目标平台有条件地导入库 代码 我正在尝试在两者之间切换dart io的 ZLibDecoder ZLibEncoder 类和基于目标平台的 zlib js 有一篇文章介绍了如何创建统一的界面 http
  • 跟踪 C++ 中递归函数被调用的次数

    我正在尝试编写一个程序 该程序具有一个参数是字符串向量的函数 我想在该函数上使用递归 但每次调用该函数时 我想更改参数 例如 fun stringArray i 其中 i 是调用该函数的次数 因此 以更简单的方式 如下所示 但我需要跟踪函数
  • 从 jQuery 事件访问函数中的参数*和*事件

    这是我不久前问的另一个问题的后续问题 通常 您可以从 jQuery 事件的函数调用中访问事件 如下所示 item live click functionToCall 并在函数中 function functionToCall ev do s
  • 如何结合GetX和build_value的使用?

    我们的应用程序有很多提供商 https pub dev packages provider https pub dev packages provider 使用的代码built value https pub dev packages bu
  • DART:将来 then 的语法

    我不明白的语法then clause 1 myFuture 6 then erg gt print erg What s erg gt expr语法上 我以为这会是一个函数 但是 then callHandler2 erg 不起作用 错误
  • Dart:未为类型“对象”定义运算符“[]”?功能()'。尝试定义运算符“[]”

    我正在创建一个 Flutter 应用程序 但在实现 Firebase 时陷入困境 enter return Container child StreamBuilder
  • 用于从深层嵌套列表/元组中提取元素的递归函数

    我想编写一个从深层嵌套元组和列表中提取元素的函数 假设我有这样的东西 l THIS THAT a b c THAT d e f 我想要一个没有 这个 和 那个 的简单列表 list a b c d e f 这是我到目前为止所拥有的 def
  • Java中的递归排列生成错误结果

    问题是生成字典排列 起初 我的代码是这样的 public class Problem24 public static void main String args permutation 123 public static void perm
  • 底部有无限像素溢出的 RenderFlex

    我有一个非常简单的控件 我试图在其中展示DropdownButton与几个TextFields 当应用程序在模拟器中运行时 我收到一条错误消息 BOTTOM OVERFLOWED BY Infinity PIXELS The Stack T
  • Excel - 查找列中不是错误或空白的最后一个值

    我需要在 Excel 电子表格的一列中找到最后一个非错误 非空白值 该列可以有多个 N A 实例 它们与实际值交替 有多种解决方案可用于查找最后一个非空单元格 但这些解决方案不考虑错误 特别是如果最后一个非空单元格出现错误 在这种情况下 解
  • 我想将对象列表添加到 firestore 文档中,-flutter

    我想将对象列表添加到 firestore 文档 我定义了产品数据模型 我还有类别数据模型 我想将类别列表添加到 firestore 中的产品文档中 我将类别添加到临时列表 然后将值放入product categories 产品 类别 类别t
  • 如何根据数据值过滤flutter中的Hive数据?

    在颤振中 我使用ValueListenableBuilder用于获取配置单元数据列表的小部件 我正在尝试按数据值过滤数据 例子 Key 1 name value mydata1 des value mydescription1 value
  • 更改语言 Flutter 的按钮

    我正在 Flutter 中构建一个应用程序 到目前为止 我正在使用 JSON 国际化 其中应用程序的语言基于用户手机中默认的语言 它工作得很好 但我想给用户有机会在不更改手机系统语言设置的情况下更改语言 只需单击按钮 然后应用程序即可更改语
  • Flutter:一张带有圆形头像的卡片,非常引人注目

    我想做一张卡片CircleAvatar 突出显示 您可以在这张图片中看到详细信息 我不知道它是如何工作的 我尝试了一些Stack和定位小部件 但它不起作用 Stack确实是解决方案 Stack children

随机推荐