2017-10-16 43 views
2

如何根据乘法函数进行阶乘运算?多数民众赞成在我和我遇到的问题是它给了我0而不是5!= 120.如何基于另一个具有两个参数的函数使用乘法运算乘积

编辑新的:我怎样才能解决双因析给我正确的数字? 如果我做5,它应该给我5 !! = 15,但它给了我12为什么?

源代码

def multiply(num1,num2): 

    sum_of_multiplication= 0 
    for i in range(num2): 
     sum_of_multiplication = add(sum_of_multiplication,num1) 
    return sum_of_multiplication 



def factorial(num1): 
    factorial_num = num1 
    for i in range(1,num1): 
     num1 = multiply(factorial_num,num1) 
     print(factorial_num) 
    print(str(num1) + "!= " + str(factorial_num)) 



def double_factorial(num1): 
    double_factorial_num = 2 
    for i in range(1,num1-2): 
     double_factorial_num = multiply(double_factorial_num, i) 
     print(double_factorial_num) 
    print(str(num1) + "!!= " + str(double_factorial_num)) 

double_factorial = double_factorial(int(input("please enter your intger:"))) 
+1

你从不使用'i':'num1 = multiply(factorial_num,num1)'应该读'factorial_num = multiply(factorial_num,i)' –

+1

'factorial_num'应该初始化为1.这会给你1的正确答案!和0 !. –

+0

目前,我得到的输入数字是我的结果,而不是零。我也猜测你没有阅读显示你永远不会更新结果的打印输出。 –

回答

0

这是因为你,包括你的乘法0。在范围函数中(在阶乘函数中),将1作为第一个参数,使其看起来像range(1,num1)。这样乘法运算将从1开始,而不是0

+0

你是什么意思?我很困惑 –

+1

你使用的范围函数从0('range(num1)')开始并向上。当你乘以零时,你得到零。因此,您应该从1开始,而不是从0开始,以使您的阶乘函数正常工作。 –

+0

它不工作,我只能使用一个参数作为因子函数,因为它只需要一个参数我重新上传了factorial的函数是否有任何错误? –

0

由于range()问题,您的factorial()稍微关闭,这很容易犯错,但您应该能够通过查看range()的文档快速解决问题。然而,你double_factorial()函数没有成功的希望,你失败了前处理的一个关键问题,该号码的奇偶校验(奇数或偶数):

def add(a, b): 
    return a + b 

def multiply(a, b): 

    my_sum = 0 

    for _ in range(b): 
     my_sum = add(my_sum, a) 

    return my_sum 

def factorial(number): 
    product = 1 

    for multiplicand in range(2, number + 1): 
     product = multiply(product, multiplicand) 

    print(str(number) + "!", "=", product) 

def double_factorial(number): 
    parity = number % 2 + 2 # start at 2 or 3 

    product = 1 

    for multiplicand in range(parity, number + 1, 2): 
     product = multiply(product, multiplicand) 

    print(str(number) + "!!", "=", product) 

number = int(input("please enter your integer: ")) 

factorial(number) 

double_factorial(number) 

输出

> python3 test.py 
please enter your integer: 5 
5! = 120 
5!! = 15 
> 
相关问题