C++ 为什么我的用户定义函数的返回语句不';你在什么情况下不工作?
我的素数检查函数将9、15等表示为素数,而它们不是素数。我的代码是:C++ 为什么我的用户定义函数的返回语句不';你在什么情况下不工作?,c++,return,user-defined-functions,prime31,C++,Return,User Defined Functions,Prime31,我的素数检查函数将9、15等表示为素数,而它们不是素数。我的代码是: #include<iostream> #include<cstdio> using namespace std; int prime_function(int num, int i); int main(){ int num,flag=0; while (cin>>num){ if(num!=1){ flag=prime_functio
#include<iostream>
#include<cstdio>
using namespace std;
int prime_function(int num, int i);
int main(){
int num,flag=0;
while (cin>>num){
if(num!=1){
flag=prime_function(num,2);
if(flag==0)
printf("%d isn't a prime.\n",num);
else {
printf("%d is a prime.\n",num);
}
}
else {
printf("%d is a prime.\n",num);
}
}
return 0;
}
int prime_function(int num, int i)
{
if(num%i==0){
printf("when num mod i == 0, num=%d i=%d\n",num,i);
return 0;//This Statement doesn't work for like num=9,15...
}
else if((i*i)+1<=num){
printf("when num mod i != 0, num=%d i=%d\n",num,i);
prime_function(num,++i);
}
printf("Going to main function.\n");
return 1;
}
它应该打印一次“转到主功能”,然后转到主功能。但它没有,它会遍历整个函数,然后进入主函数。有人能帮我解决这个问题吗?代替
prime_function(num,++i);
你想要
return prime_function(num,++i);
而不是
prime_function(num,++i);
你想要
return prime_function(num,++i);
而不是
prime_function(num,++i);
你想要
return prime_function(num,++i);
而不是
prime_function(num,++i);
你想要
return prime_function(num,++i);
您需要检查递归调用
prime_函数的返回值
;此时,它的返回值被忽略,在不应该返回的情况下,函数将返回true
else if((i*i)+1<=num){
printf("when num mod i != 0, num=%d i=%d\n",num,i);
if (!prime_function(num,++i))
return 0;
}
else if((i*i)+1您需要检查递归调用prime_函数的返回值;此时它的返回值被忽略,如果不应该,函数将返回true
else if((i*i)+1<=num){
printf("when num mod i != 0, num=%d i=%d\n",num,i);
if (!prime_function(num,++i))
return 0;
}
else if((i*i)+1您需要检查递归调用prime_函数的返回值;此时它的返回值被忽略,如果不应该,函数将返回true
else if((i*i)+1<=num){
printf("when num mod i != 0, num=%d i=%d\n",num,i);
if (!prime_function(num,++i))
return 0;
}
else if((i*i)+1您需要检查递归调用prime_函数的返回值;此时它的返回值被忽略,如果不应该,函数将返回true
else if((i*i)+1<=num){
printf("when num mod i != 0, num=%d i=%d\n",num,i);
if (!prime_function(num,++i))
return 0;
}
else如果((i*i)+1可以,但你能解释一下它是如何解决我的问题的吗?@AhashanAlamSojib,因为递归就是这样工作的。我建议看一个更简单的例子,例如计算阶乘:int fac(int i){return(i==1)?(1):(i*fac(i-1));}
是的,我对阶乘函数使用了直接返回赋值。我想我对从返回调用函数感到困惑。谢谢@AlanStokes…它工作得很好,但你能解释一下它是如何解决我的问题的吗?@AhashanAlamSojib,因为递归就是这样工作的。我建议看一个更简单的例子,例如计算阶乘:intfac(inti){return(i==1)?(1):(i*fac(i-1));}
是的,我对阶乘函数使用了直接返回赋值。我想我对从返回调用函数感到困惑。谢谢@AlanStokes…它工作得很好,但你能解释一下它是如何解决我的问题的吗?@AhashanAlamSojib,因为递归就是这样工作的。我建议看一个更简单的例子,例如计算阶乘:intfac(inti){return(i==1)?(1):(i*fac(i-1));}
是的,我对阶乘函数使用了直接返回赋值。我想我对从返回调用函数感到困惑。谢谢@AlanStokes…它工作得很好,但你能解释一下它是如何解决我的问题的吗?@AhashanAlamSojib,因为递归就是这样工作的。我建议看一个更简单的例子,例如计算阶乘:intfac(inti){return(i==1)?(1):(i*fac(i-1));}
是的,我在阶乘函数上使用了直接返回赋值。我想我对从return调用函数感到困惑。谢谢@AlanStokes。。。