gpt4 book ai didi

c++ - 为数字序列创建递归函数

转载 作者:行者123 更新时间:2023-11-30 00:45:56 26 4
gpt4 key购买 nike

我知道这是基本的 CS 知识,但我仍然无法理解在 for 循环上执行递归函数的想法。我仍然对递归的想法感到困惑,尤其是数字。假设有一个数字序列 3、11、27、59、123...。我知道如何计算数学递归序列 An = An-1 + (8*(n-1)),但是不要我真的知道如何将其放入 C++ 递归函数中。

有人可以概述为上述数字序列创建递归函数的过程吗?

最佳答案

递归函数有两个“部分”,基本情况和递归。基本情况是您的函数停止递归(并开始展开调用堆栈)。如果没有基函数,该函数将一直调用自身,直到堆栈溢出发生并且程序被操作系统终止。

递归部分采用初始问题(在您的情况下找到序列中的第 i 个数字)并将其缩小。这种情况会发生,直到达到基本情况。所以为了找到序列中的第 i 个数字,比如说第 4 个,你开始寻找第 4 个数字,但这取决于第 3 个,而第 3 个又取决于第 2 个,而第 2 个又取决于第一个。初始递归将问题从第 4 个数字缩小到第 3 个数字。

这是针对您的序列的递归函数的尝试(完全没有测试)。

int recursive(int i) {
// This is your base case, it prevents infinite recursion.
if (i == 0) return 0; // Or whatever you base value is
else {
int sum = recursive(i-1) + 8 * (i-1);
return sum;
}
}

很多时候递归函数可以用循环来完成。但是有些函数需要递归。例如,Ackermann's Function . Computerphile 上的一个非常好的视频

关于c++ - 为数字序列创建递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40857859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com