大神 ,c++算法代码求助!谢谢

判断一个int数是不是丑数,条件:因素只有2或者3或者5。例如,6 8是丑陋而14不是丑陋的,因为它包括7这个因素。(1认为是丑数)
bool isUgly(int num)
{
if(num==1)
return true;
if(num%2==0)
{
num=num/2;
isUgly(num);
}
if(num%3==0)
{
num=num/3;
isUgly(num);
}
if(num%5==0)
{
num=num/5;
isUgly(num);
}
return false;
}

运行结果只有1是丑数。其它都不是丑数,请问上述代码错在哪里??谢谢大神解答!
c币不多,大神不要嫌弃!

把函数改一下,如下所示:

 bool isUgly(int num)
{
    if(num==1)
        return true;
    if(num%2==0)
    {
        num=num/2;
        return isUgly(num);
    }
    if(num%3==0)
    {
        num=num/3;
        return isUgly(num);
    }
    if(num%5==0)
    {
        num=num/5;
        return isUgly(num);
    }
    return false;
}

至于问题在哪里,我个人认为你应该自己单步调试一下。

因为你用到了递归,递归返回时,会接着向下执行

通过上面的代码举例说明:
如果输入的num=14,那么:
在判断if(num%2==0)时,就会进入if判断中,然后执行num=num/2,这里将得到num=7;
然后在次执行isUgly(int num),这次num=7,那么在你所写的代码中并没有对除了1、2、3、5外数的进行操作,所以直接会返回false

 bool isUgly(int num)//判断是否是  
{  
    while (num %2 == 0)  
    {  
        num /= 2;  
    }  
    while (num %3 == 0)  
    {  
        num /= 3;  
    }  
    while (num %5 == 0)  
    {  
        num /= 5;  
    }  
    if (num == 1)  
        return true;  
    else  
        return false;//not an ugly number  
}  

图片说明
改成这样就好了