我想寫一些C++代碼,這是一個公式演示,但使用遞歸。 這是我的程序和它拋出的錯誤。在C++ int數組周圍的堆棧損壞錯誤
環境 - 的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;
}
}
整個程序正在完善按我預期的邏輯,並給出正確的輸出,當我調試,但拋出的異常而退出的main()後執行完成。
我看到我正在做一個非常愚蠢但錯綜複雜的內存管理錯誤[並且找不到它]。
任何幫助表示讚賞。
在C++中的數組是零索引 – Mgetz 2014-12-04 19:24:33