2017-10-16 58 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 
> 
相關問題