传递参数时候出现的错误?
project euler第十四题
求解100万内最长链。
#include "stdafx.h"
int chain_length(int num);
int _tmain(int argc, _TCHAR* argv[])
{
int i;
int temp = 0;
int mark;
int llength = 0;
for (i = 1 ; i < 1000000 ;i++)
{
temp = chain_length(i);
if (temp > llength)
{
llength = temp;
mark = i;
}
}
return 0;
}
int chain_length(int anum)
{
int i = 0;
int num = anum;
while (1)
{
i ++;
if(num == 1)
{
break;
}
else if(num % 2 == 0)
{
num = num / 2;
}
else
{
num = num * 3 + 1;
}
}
return i;
}
当main函数执行到计算113383这值 的时候函数里头的num值(由anum传来)就会自动变成负数,然后进入死循环,为什么?
编译环境是vs2005,win32 console application,请教问题在什么地方