gpt4 book ai didi

c++ - 发布版本中运行时间过长(调试版本正常)

转载 作者:行者123 更新时间:2023-11-30 18:55:21 25 4
gpt4 key购买 nike

我对 Visual Studio 中的调试\ Release模式有疑问。

我编写了一个递归程序,它获取一个整数数组(最大大小为 20 个单元格)并按该规则重新排列它:

第一个数字是素数,之后是(非素数),能被2整除的数字,然后是能被3整除的数字,然后是能被5整除的数字,被7整除的数字,被11整除的数字等等......

我不知道为什么,但是当程序在 Debug模式下运行时,它会立即成功完成。但在 Release模式下大约需要 3.5 分钟。为什么差别这么大?

不知道问题是效率低下还是其他什么。如果代码太长难以理解,没关系,我很乐意提供指导。

这是代码:

int main()
{
printf("What is the size of the array?\n");
scanf("%d",&arrySize);
printf("Enter %d integers\n",arrySize);
inputArry(arry,arrySize,0);

arrangeArry(arry,1,arrySize);

printArry(arry,0,arrySize);

main();
return 0;
}

//insert numbers to array
void inputArry (int arry[], int size, int index)
{
if (index>size-1)
return;

scanf("%d",&arry[index]);

inputArry(arry,size,index+1);
}

void arrangeArry (int arry[], int index, int size) // Arrange array
{
if (index >=size)
return;

arrangeSubArry(arry,index);

arrangeArry(arry,index+1,size);
}

// Given arranged array except the last number, this
// function arranges the array including the last number
void arrangeSubArry (int arry[], int index)
{
int temp=0;

if (index==0)
return;

if (dividedBy(arry[index],2)<dividedBy(arry[index-1],2))
{
temp=arry[index];
arry[index]=arry[index-1];
arry[index-1]=temp;

arrangeSubArry(arry,index-1);
}
}

// Gives the first prime number that int num is divided by
int dividedBy (int num, int counter)
{
if (num==1||num==0||isPrime(num,sqrt(num))==1)
return 1;
if (isPrime(counter,sqrt(counter))==1)
{
if (num%counter==0)
return counter;
}

dividedBy(num, counter+1);
}

最佳答案

I have a question about debug\ release mode in visual studio.

它实际上与调试或发布版本无关

<小时/>

I wrote a recursive program that gets an array of integers

没有基本情况。需要有东西来停止递归。

<小时/>
int main()
{
...

main();
return 0;
}

在 C++ 程序中调用 main 是未定义的行为。请参阅Can main function call itself in C++? 。一旦程序非法,什么事情都有可能发生,没关系。

留意demons flying out of your nose .

关于c++ - 发布版本中运行时间过长(调试版本正常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27807291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com