如果是阶乘,则返回1返回0

时间:2017-10-17 19:39:42

标签: c++ return-value factorial

我需要对代码进行一般性解释:

案例1)

在这个阶乘函数中,如果num为0,那么它是否返回0!,这是1?

情况2) 如果number>> = 1,那么return fact,这是它的阶乘值?

我了解return 1return 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 个答案:

答案 0 :(得分:0)

#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;
}

我认为你的问题非常好,作为一名初学者程序员,当我看到这样的问题时,它也会帮助我。 希望这可以帮助!古德勒克!