【发布时间】:2015-10-08 17:33:53
【问题描述】:
我编写了一个程序来查找输入数字的质因数。
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void pf(int, int,int);
int main()
{
int num,i=2,j=2;
printf("Enter a number : ");
scanf("%d", &num);
pf(num,i,j);
getch();
return 0;
}
void pf(int num,int i, int j)
{
int rem, rem2;
if(num==1)
exit(1);
if(i>j)
{
rem=i%j;
if(rem==0)
pf(num,i+1,2);
if(rem!=0)
pf(num,i,j+1);
}
if(i==j)
{
rem2=num%i;
if(rem2==0)
{
printf("%d, ", i);
num=num/i;
pf(num,i,j);
}
if(num!=1)
pf(num,i+1,2);
}
}
我正在研究递归,但我经常使用exit() 语句。当我使用return 语句时变得非常困难。谁能告诉我如何用return 语句替换这个程序中的退出语句。这个程序运行良好,但是输入一个大数时,程序每次都崩溃。
【问题讨论】:
-
只需将 return 1 替换为 exit(1)
-
@Siraj 一个数的质因数是什么?
-
@Siraj 另外语句 if(TRUE) 是什么意思?
-
质因数是一个数的简单因数,例如,24 的质因数为 2,2,2,3,18 的质因数为 2,3,3,意思是,将这些数相乘将得到输入的号码。数的所有因数都应该是素数,2,3,5,7,11等等!!
-
哦,把 TRUE 换成 rem2==0