代码之家  ›  专栏  ›  技术社区  ›  James T

返回1在阶乘的情况下返回0

  •  -2
  • James T  · 技术社区  · 7 年前

    案例1)

    num 是0,那么它是否返回0!,哪一个是1?

    案例2) 如果数字大于等于大于1,则为 return fact

    我明白 return 1 return 0 都是为了成功产生结果。

    在这种情况下,为什么我不能返回0?

    double factorial(int num)
        {
            int fact = 1;
            int i = 1;
            if (num == 0)
                return 1;
            else
                while (num >= i)
                {
                    fact = fact*i;
                    i++;
                }
            return fact;
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   D.H.    7 年前
    #include <iostream>
    
    using namespace std;
    
    int factorial(int num)              //I changed this to return int since you are taking int and int*int will always be int
        {
            int fact = 1;             
            //int i = 1;                //dont need this
            if (num == 0)
                return fact;            //You can just say return `fact` or `return 1` - i like to make my code readable - s I used `return fact`
                                        //I also prefer to set the value of fact as 1 here and return the 1 at bottom so we only have one return statement
                                        //but thats just me - having 2 return statements should be fine if used wisely
    
                /*while (num >= i)      //thispart was wrong i reedited it into a better and more efficient code below
                {
                    fact = fact*i;
                    i++;
                }*/
            else
                {
                    while(num>1)        // so lets say we enter 4 - 4 is larger than 1 
                    {
                    fact*=num;          //first step through it will be fact = fact * num; fact is 1 at first loop so it will be 1 * 4 and we put that value into fact
                    num--;              //here we set num to 3 for next loop and we repeat :D
                    }
                }
    
            return fact;                //here we return the value
        }
    
    
    int main()                          //just a normal main 
    {
        int number;
        cout<<"Enter number: \n";
        cin>>number;
        cout<<"Factorial of "<<number<<" is "<<factorial(number);
    
        return 0;
    }
    

    我认为你的问题很好,作为一个程序员新手,当我看到这样的问题时,它也会帮助我。 希望这有帮助!祝你好运!