返回1的阶乘

问题描述:

的情况下返回0我需要的代码的一般解释:返回1的阶乘

案例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; 
+0

您没有返回状态,而是返回调用者可以使用的值。 – NathanOliver

+0

“_那么为什么我不能返回0,在这种情况下?_”什么?你是说,不等于零的数字的阶乘等于零?你知道factorial是如何工作的吗?另外,什么是负数的阶乘?由于你的功能也接受这些。 –

+0

@AlgirdasPreidžius我是C++的新手,所以请不要对我说坏话。 –

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

我认为你的问题是完全正常的,并是一个初学编程的自己还可以帮助我,当我看到这样的问题。 希望这有助于!祝你好运!