需要使用递归编写算术级数

时间:2019-05-06 00:52:38

标签: c++ recursion math

我需要使用第一个值(a1)= 2,差异(d)= 3的递归来编写算术级数,在C ++中总共将有15个成员(n)。我已经写过,但是没用(

int progressionRec(int a1, int d, int n){
    if(n == 1){
        return a1;
    }
    else
        return a1+d*progressionRec(a1, d, n - 1);

}

我需要输出:44 41 38 ... 2,但它给了我:14348906 ...

2 个答案:

答案 0 :(得分:0)

您需要输出多个数字,但只能从一个函数中返回1个整数,因此只需打印数字即可,如果可以的话,不要返回它们。

此处:

void progressionRec(int a1, int d, int n) {
    if(n <= 1){
        printf("%d\n", a1);
        return;
    } else {
        int next = a1 + d;
        printf("%d\n", a1);
        progressionRec(next, d, n - 1);
    }
}

如果您希望它像44、41、38那样向下移动。 只需将负值传递给参数“ d”

例如:

progressionRec(44, -3, 10);

答案 1 :(得分:0)

使用您的原始代码,它应显示为

OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "chdir to cwd (\"/home/oracle\") set in config.json failed: permission denied": unknown

这将返回一个值,即系列的第n个元素。 但是,您指出希望结果以相反的顺序[a1 +(n-1)d],[a1 +(n-2)d],... a1。这可以通过从循环中调用函数来完成,将递减的索引用作“ n”。像上一个答案一样,您是要从函数中打印每个术语还是让它从重复调用中返回连续的结果?