Recursion 递归函数-参数值在某个值之后不更新
我编写了一个递归函数,指向整数的指针作为参数传递。该整数值在函数中递增,但我面临一个奇怪的问题,即在某个值之后,其值永远不会更新。甚至我也在检查那个地址的值 代码如下:--Recursion 递归函数-参数值在某个值之后不更新,recursion,Recursion,我编写了一个递归函数,指向整数的指针作为参数传递。该整数值在函数中递增,但我面临一个奇怪的问题,即在某个值之后,其值永远不会更新。甚至我也在检查那个地址的值 代码如下:-- computeWait(long-long-int-begin,long-long-int-begin2,long-long-int-w, 整数*当前,整数限制) { long long int next=0,arrival=0; long-long-int-next1=0,服务=0; 长整型服务时间=0; 长整型等
computeWait(long-long-int-begin,long-long-int-begin2,long-long-int-w,
整数*当前,整数限制)
{
long long int next=0,arrival=0;
long-long-int-next1=0,服务=0;
长整型服务时间=0;
长整型等待=0;
静态长整型Ta=0;
静态长整型Ts=0;
静态长整型W=0;
而(*电流<极限)
{
下一步=(16807*开始)%m;
到达=-200*log((双)下一个/m);
next1=(16807*begin2)%m;
服务=-100*日志(EDRN((双)next1));
等待=最大值(0,(w+服务-到达));
Ta=Ta+到达;
Ts=Ts+服务;
W=W+等待;
*电流=*电流+1;;
computeWait(下一步、下一步1、等待、当前、限制);
}
printf(“\n\n总到达%Ld总服务%Ld总等待%Ld\n”,Ta/限制,Ts/限制,W/限制);
}
int main(int agrc,char*argv[]
{
int num=0;
int currentValue=0;//种子数
int end=1000000;
computeWait(146831694,0和currentValue,结束);
}
103917之后,其值不会得到更新,并且会导致内存保护失败
请让我知道我哪里做错了什么,因为修复它似乎很琐碎
谢谢,
Neha。嗯,我并没有真正尝试去理解代码,但我看到了一些大数字和递归这个词。
所以我猜这是堆栈溢出,因为您的递归太深了?嗯,我并没有真正尝试理解代码,但我看到了一些大数字和递归这个词。 我猜这是堆栈溢出,因为递归太深了
computeWait(long long int begin, long long int begin2, long long int w,
int* current, int limit)
{
long long int next = 0, arrival = 0;
long long int next1 = 0, service = 0;
long long int serviceTime = 0;
long long int wait = 0;
static long long int Ta = 0;
static long long int Ts = 0;
static long long int W = 0;
while(*current < limit)
{
next = (16807 * begin) % m;
arrival = -200 * log((double)next/m);
next1 = (16807 * begin2) % m;
service = -100 * log(EDRN((double)next1));
wait = max(0, (w + service - arrival));
Ta = Ta + arrival;
Ts = Ts + service;
W = W + wait;
*current = *current + 1;;
computeWait(next, next1, wait, current, limit);
}
printf("\n\nTotal arrival %Ld Total service %Ld Total wait %Ld\n", Ta/limit, Ts/limit, W/limit);
}
int main(int agrc, char* argv[])
{
int num = 0;
int currentValue = 0; // seed number
int end = 1000000;
computeWait(1, 46831694, 0, ¤tValue, end);
}