簡體   English   中英

Python編寫遞歸函數

[英]Python writing recursive function

這個問題與如何編寫適合序列而不以三角形形式打印星星的遞歸函數有關。

我正在嘗試編寫一個使用Pollard Rho方法查找整數分解因子的python函數。 在這一點上,我堅持嘗試編寫一個小的函數,該函數將找到f(n)這樣: 在此處輸入圖片說明

0至4的情況如下:

在此處輸入圖片說明

我想我對如何設置基本案例以及讓函數自行調用以計算遞歸函數的請求迭代感到困惑。 以下是對f(0)甚至都無效的嘗試:

def f(xn):
    if xn == 0:
        answer = 2
        return answer
    else:
        x = xn
        f(0) = 2
        f(xn) = f(x - 1)^2 + 1
        return f(xn)

嘗試時,此嘗試僅導致錯誤“ SyntaxError:無法分配給函數調用”:

print f(0)

有人可以幫忙如何編寫與案例0到4的行為相匹配的遞歸函數,如我的代碼嘗試上面的圖像中所述?

你差點就吃了! 請注意,冪運算不是python中的運算符^ ,而是**

def f(xn):
    if xn == 0:
        answer = 2
        return answer
    else:
        answer = f(xn - 1)**2 + 1
        return answer

分配給函數調用是代碼中的語法錯誤。 相反,您應該調用函數並將結果分配給局部變量(此處稱為answer )。

要以更簡單的方式編寫相同的函數:

def f(xn):
    return (1 + f(xn-1)**2) if xn else 2

首先,python中的冪運算符是** ,您也不需要一些額外的操作,例如x = xnf(0) = 2

>>> def my_func(n):
...     if n == 0 :
...        return 2
...     return my_func(n-1)**2 +1
... 
>>> my_func(1)
5
>>> my_func(2)
26
>>> my_func(3)
677

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM