簡體   English   中英

類中的 Python 遞歸

[英]Python Recursion within Class

我今天剛學python,所以很天真地想寫一個關於遞歸的代碼。 那么我們如何在python中實現以下功能呢?

class mine:
    def inclass(self):
        self = mine();
    def recur(num):
        print(num, end="")
        if num > 1:
            print(" * ",end="")
            return num * self.recur(num-1)
        print(" =")
        return 1

def main():
    a = mine()
    print(mine.recur(10))

main()

我試圖定義自我,但想不出辦法來做到這一點。 有什么建議么? 非常感謝。


是的,以下工作,謝謝。

class mine:
    def recur(self, num):
        print(num, end="")
        if num > 1:
            print(" * ",end="")
            return num * self.recur(self, num-1)
        print(" =")
        return 1

def main():
    a = mine()
    print(mine.recur(mine, 10))

main()

類的每個方法都必須將self作為第一個參數,即執行以下操作:

def recur(self, num):

它現在應該可以工作了。

基本上幕后發生的事情是當你這樣做時

instance.method(arg1, arg2, arg3, ...)

Python 確實如此

Class.method(instance, arg1, arg2, arg3, ....)
# USING FUNCTION    
def function_recursion(number):
    if number <= 1:
        return number
    else:
        return (number + function_recursion(number - 1))
result = function_recursion(5)
print("function recurssion: ", result)

#USING CLASS
class Recursion:
    def __init__(self, number):
        self.number = number
        
    def recur(self):
        if self.number <= 1:
            return True
        else:
            return (self.number + recur(self.number - 1))
result = Recursion(3)
print("Recurssion using class: ",result.recur())

這是一個實際工作的代碼示例

class Card():
    def __init__(self,cardsPlayedList,cardPosition):
        self.cardsPlayedList = cardsPlayedList
        self.cardPosition = cardPosition
    #    self.cardPosition

    def getNewCard(self,cardPosition):
        cardNum = 0
        cardInList = False
        
        cardNum = random.randint(1,len(cardList)-1)          # Get random card from List - 1 to 52 
        for x in self.cardsPlayedList:
            if(cardNum == x):
                cardInList = True                            

        if(cardInList == False):
            self.cardsPlayedList.insert(self.cardPosition, cardNum)    # if card not already played then store in list
            return cardNum
        else:
            return self.getNewCard(cardPosition)   

暫無
暫無

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

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