我怎样才能将此程序放在递归(python)中?

时间:2018-06-20 02:34:46

标签: python recursion

如何将其递归?这是一项计算数字阶乘并确定数字是否为质数的任务,不仅要使用加法和减法,而且还必须采用递归形式,但我不知道该怎么做。

def Prod(x,r):
    z=0
    while x>0:
        z=z+r
        x=x-1
    return z
def Fat(x):
    r=1
    while x>1:
        r=Prod(x,r)
        x=x-1 
    return r

AND

def Divi(x,d):
    c=0
    while x>=d:
        x=x-d
        c=c+1
    return x
def Pri(x):
    r='N'
    d=2
    while d<x and r=='N':
        if(Divi(x,d)==0):
            r='S'
        d=d+1
    if r=='N':
        t='its prime'
    else:
        t='not prime'
    return t

忘了说我也只能使用if ... elif ... else

2 个答案:

答案 0 :(得分:0)

递归函数只是调用自身的函数。

def me():
    me()

除了上面给出的最简单的递归函数,它永远递归,就像无限循环永远循环一样:

while True:
    dab()

那么您如何防止无限循环?您有一个循环条件:

x = 3
while x > 0:
    dab()
    x -= 1

现在您的循环将退出。那么如何防止递归函数无限循环呢?我们提供了基本情况,其中递归函数不会调用自身:

def dabr(x):
    if x <= 0:
        return
    dabr(x - 1)

在上面的代码中,当x>1不再为true时,您退出循环。那是你的基本情况。因此,应将其写为if语句,以使函数仅在x>1时才在其自身上重复出现。这是一个提示:

def Fat(x):
    if x <= 1:
        return ???
    return ???

答案 1 :(得分:0)

以递归方式编程时,就是在调用函数本身。

def Prod(a, b):
    ...

def Fat(r=1):

    if r <= 1:
        return 1

    else:
        return Prod(r, Fat(r - 1))

在这种情况下,您正在内部调用函数Fat