关于参数传值传递改变了实际值的问题,发生在递归后。求教知道者~~~

yao2007 2008-07-28 10:45:47
大家运行下一下代码,看看结果。奇怪的是参数的实际值被函数改变了。就是说传值传递参数的时候突然出现问题.....期待能者回答,谢谢。

#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <math.h>
#include <string.h>
#include <fstream.h>


bool isPrime(int n )
{
if( n % 2 )
{
if( 1 == n )
return false;
double sqrtOf = sqrt( n ) ;
for(int i = 3 ; i <= (int)sqrtOf ; i++)
{
if( n % i )
i++;
else
return false;
}
return true ;
}
else
{
if( 2 == n )
return true;
return false ;
}
}


void analyze(int a , int b , char s[])
{
int quotient = a / b ; //商
int remainder = a % b ; //余数
char text[50];
if( (double)remainder > (double)b/2 )
{
quotient++ ;
remainder = a - quotient * b ;
sprintf( text , "%d = %d * %d - %d\n" , a , quotient , b , -remainder );
}
else
sprintf( text , "%d = %d * %d + %d\n" , a , quotient , b , remainder );
strcat(s,text);
if( remainder < 0 )
remainder = -remainder;
if( 1 == remainder )
return ;
if( 0 == remainder )
return ;
analyze(b,remainder,s);
}


int processEven(int num )
{
for(int i = num / 2 ; i > 0 ; i-- )
{
if( isPrime(i) && isPrime(num-i) )
{
char s[100];
sprintf( s,"%d = %d + %d\n" , num , i , num - i );
analyze(num,i,s);
printf("%s\n",s);
}

}

return 0 ;
}

int processOdd(int num )
{
return 0 ;
}

int main()
{
processEven(432);
return 0 ;
}
...全文
64 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧