c+;中int数组周围的堆栈损坏错误+; 我试图编写一些C++公式,它是一个公式的演示,但是使用递归。 这是我的程序和它抛出的错误

c+;中int数组周围的堆栈损坏错误+; 我试图编写一些C++公式,它是一个公式的演示,但是使用递归。 这是我的程序和它抛出的错误,c++,memory-management,stack,C++,Memory Management,Stack,环境-Visual Studio 2012 编译-成功 运行时异常- 运行时检查失败#2-变量“inputNumbers”周围的堆栈已损坏 代码- #include <stdlib.h> #include <iostream> using namespace std; int FindNumber(int Numbers[],int index,int sum, int count) { if(count == 0) retur

环境-Visual Studio 2012
编译-成功
运行时异常-
运行时检查失败#2-变量“inputNumbers”周围的堆栈已损坏

代码-

#include <stdlib.h>
#include <iostream>
using namespace std;


int FindNumber(int Numbers[],int index,int sum, int count)
{       

    if(count == 0)
        return sum;
    else if (count == 1)
    {
        sum -= Numbers[index-1];
        index = index -1;
        count = count-1;
        return sum = FindNumber(Numbers,index,sum,count);
    }
    else
    {
        sum += Numbers[index-1];
        index = index -1;
        count = count-1;
        return sum = FindNumber(Numbers,index,sum,count);
    }
}

void main()
{   
    int inputNumbers[50]; //declare the series of numbers
    int cnt = 0; //define and initailize an index counter for inserting the values in number series.
    int position = 7; //defines the position of the number in the series whose value we want to find.

    // insert the number series values in the int array.
    for (int i = 1; i < 51; i++)
    {
        inputNumbers[cnt] = i;
        cnt++;
        inputNumbers[cnt] = i;
        cnt++;
    }

    cnt=0;
    for (int i = 1; i < 51; i++)
    {
        cout<<inputNumbers[cnt]<<endl;
        cnt++;
        cout<<inputNumbers[cnt]<<endl;
        cnt++;
    }

    // set another counter variable to 3 since formula suggests that we need to substrat 3 times from the nth position
    // Formula : nth  = (n-1)th + (n-2)th - (n-3)th
    cnt = 3;
    int FoundNumber = 0;

    //Check if position to be found is greater than 3.
    if(position>3)
    {
        FoundNumber = FindNumber(inputNumbers,position,FoundNumber,cnt);
        cout<< "The number found is : " << FoundNumber<< endl;
    }
    else
    {
        cout<<"This program is only applicable for finding numbers of a position value greater than 3..."<<endl;        
    }

}
#包括
#包括
使用名称空间std;
int FindNumber(整数[],整数索引,整数和,整数计数)
{       
如果(计数=0)
回报金额;
否则如果(计数=1)
{
总和-=数字[索引-1];
指数=指数-1;
计数=计数-1;
返回和=FindNumber(数字、索引、和、计数);
}
其他的
{
总和+=数字[索引-1];
指数=指数-1;
计数=计数-1;
返回和=FindNumber(数字、索引、和、计数);
}
}
void main()
{   
int inputNumbers[50];//声明数字序列
int cnt=0;//定义并初始化索引计数器,用于在数字系列中插入值。
int position=7;//定义要查找其值的序列中数字的位置。
//在int数组中插入数字系列值。
对于(int i=1;i<51;i++)
{
输入编号[cnt]=i;
cnt++;
输入编号[cnt]=i;
cnt++;
}
cnt=0;
对于(int i=1;i<51;i++)
{

难道你不是在填充两倍于数组大小的数组吗

for (int i = 1; i < 51; i++)
{
    inputNumbers[cnt] = i;
    cnt++;
    inputNumbers[cnt] = i;
    cnt++;
}
for(int i=1;i<51;i++)
{
输入编号[cnt]=i;
cnt++;
输入编号[cnt]=i;
cnt++;
}

您不是在这里填充两倍于数组大小的内容吗

for (int i = 1; i < 51; i++)
{
    inputNumbers[cnt] = i;
    cnt++;
    inputNumbers[cnt] = i;
    cnt++;
}
for(int i=1;i<51;i++)
{
输入编号[cnt]=i;
cnt++;
输入编号[cnt]=i;
cnt++;
}

对于长度为50的数组,您无法访问元素49以外的区域;因此代码应该如下所示:

int inputNumbers[50]; //declare the series of numbers
int cnt = 0; //define and initailize an index counter for inserting the values in number series.

// insert the number series values in the int array.
for (int i = 0; i < 50; i++)
{
    inputNumbers[cnt] = i;
    cnt++;
}
int inputNumbers[50];//声明数字序列
int cnt=0;//定义并初始化索引计数器,用于在数字系列中插入值。
//在int数组中插入数字系列值。
对于(int i=0;i<50;i++)
{
输入编号[cnt]=i;
cnt++;
}

实际上,正如前面的回答一样,您可能只想增加cnt一次。

对于长度为50的数组,您无法访问元素49之外的内容;因此代码应该如下所示:

int inputNumbers[50]; //declare the series of numbers
int cnt = 0; //define and initailize an index counter for inserting the values in number series.

// insert the number series values in the int array.
for (int i = 0; i < 50; i++)
{
    inputNumbers[cnt] = i;
    cnt++;
}
int inputNumbers[50];//声明数字序列
int cnt=0;//定义并初始化索引计数器,用于在数字系列中插入值。
//在int数组中插入数字系列值。
对于(int i=0;i<50;i++)
{
输入编号[cnt]=i;
cnt++;
}

<>和实际上在前一个答案中,你可能只想增加CNT。

C++中的数组是C++中的零索引数组,是零索引的。请拿枪,在头上开枪……/请拿枪向我开枪……