如何将此程序放在递归(python)中?

2024-04-29 11:23:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我怎样才能把它放在递归中?这是一个用来计算一个数的阶乘,判断一个数是素数还是素数的赋值,不仅要用加法和减法,而且要用递归的形式,但我不知道怎么做

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

以及

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除此之外什么也不能用


Tags: andreturnifdefprodfatelseprime
2条回答

递归函数只是一个调用自身的函数

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 ???

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

def Prod(a, b):
    ...

def Fat(r=1):

    if r <= 1:
        return 1

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

在本例中,您正在调用函数本身内部的Fat

相关问题 更多 >