使用递归为序列生成正确的输出

问题描述 投票:0回答:0

我正在尝试使用递归来解决返回序列第 n 个数字的函数。它是这样的:

首先,n(整数)必须大于0。第一个数字以4开头。后面的每个数字都是前一个数字的三倍,然后加上1。例如,这些是序列的前几个数字:1 , 4, 13, 40, 121, 364, 等等

int recursive_sequence(int n)
{
    if (n == 1)
        return 1; // This is base case
    else
        return 4 + (3 * (n-1) + 1) + recursive_sequence(n-1); // This is recursive case
}

我尝试了这个,它从第一个数字 4 开始,然后将它添加到“前面数字的 3 倍,加 1”,然后调用递归函数向下一个数字。例如,如果“n”输入为“4”,那么正确的输出将是 40,因为 3 * (13) + 1 = 40。但是,例如,使用我的代码,我得到了 34。我在做什么错误的?如果可以,请在您的回答中包含一个示例(将不胜感激!)。

c++ recursion integer
© www.soinside.com 2019 - 2024. All rights reserved.