这是查找任何数字的素因数的程序。
PS:你可能会批评我使用的算法,但它是在我太死板而无法使用正统算法的情况下出现的。
当 n=1 时,如何在不使用 exit(1)
的情况下使递归中断在 if block 内?
#include<stdlib.h>
#include<stdio.h>
void prime(int);
int main(){
int n;
scanf("%d",&n);
prime(n);
return 0;
}
int i=2;
void prime(int n){
int n1=n;
{
float i1=i;
if(n==1)
return;
int c1=n/i;
float c2=n/i1;
if(c1==c2)
{
printf("%d ",i);
n=n/i;
if(n!=1)
printf("x ");
prime(n);
}
else{
i++;
prime(n);
}
}
if(n!=1)
printf("%d",n);
printf("\n");
}
但是我得到了一些不需要的输出
15
3 x 5
5
5
5
15
如果我使用exit(1)
我没有得到任何额外的东西,而不是 if block 中的 return ,但是如果我不想使用 exit(1)
该怎么办? ?
为什么是 n
的值递归函数在已经变成1之后又变成5了?
最佳答案
if(n!=1)
printf("%d",n);
printf("\n");
去掉这些线。
关于c - 当 n=1 时,如何在 if block 内使用 exit(1) 时使递归中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50974500/