c++ 不破坏彼此值的再招募函数[已关闭]

jutyujz0  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(128)
    • 已关闭**。此问题需要超过focused。当前不接受答案。
    • 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

18小时前关门了。
Improve this question

如何创建工作招聘功能。

所以我想做一个递归函数,当输入第N项时,它将输出第N行。如下所示:
S = 1 - 3 + 5 - 7 + 9 - 11 +...+(2 x i-1)x(-1)^(i-1)
S = -1/2 - 1/4 - 1/6 + 1/8-... -... -...+...
但是当数字在正负之间相互冲突时我遇到了麻烦,所以我不能显示我想要的行结果。如何使递归函数中的加法不混乱?
这里的结果是:
enter image description here
下面是我写的代码:

#include <iostream>
using namespace std;

int S(int n)
{
    if(n == 0 || n == 1) {
        return 1;
    }
    else if (n % 2 == 0)
    {
        return (2 + S(n-1)) * -1;
    }
    else
    {
        return (2 + S(n-1)) * 1;
    }
    
}


int main(){

    system("cls");
    int n;
    cout << "N : ";
    cin >> n;

    for (int i = 1; i <= n; i++)
    {
        cout  << S(i) << " ";
    }
}

并且我期望当我输入第N/N项的值时,它将正确地显示第N行,而在递归函数中没有任何正值和负值冲突。
像这样:
S = 1 - 3 + 5 - 7 + 9 - 11 +...+(2 x i-1)x(-1)^(i-1)
S = -1/2 - 1/4 - 1/6 + 1/8-... -... -...+...

kgsdhlau

kgsdhlau1#

您的代码的问题是递归函数'S(int n)'没有正确计算您感兴趣的序列的第n行。相反,它似乎在计算一个完全不同的序列。
假设你试图生成一个从数字1开始的序列,并且每个后续数字都是前两个数字的和乘以2,然后如果索引是偶数就取反,如果索引是奇数就保持为正,那么你的递归函数应该修改如下:

int S(int n)
{
    if(n == 1 || n == 2) {
        return 1;
    }
    else if (n % 2 == 0)
    {
        return (-2 * S(n-1) - S(n-2));
    }
    else
    {
        return (2 * S(n-1) + S(n-2));
    }
}

在这里,当'n'为奇数时,函数计算前两个数字乘以2的和,然后将它们相加。当'n'为偶数时,函数对相同计算的结果求反。基本情况是当'n'为1或2时,函数返回1。
通过这种修改,您的代码应该为给定的序列生成正确的输出。

相关问题