def geo():
    start = int(input()) # starting number
    multiplier = int(input()) # the multiplier
    length = int(input()) # how long the list should be
    for i in range(length):
        x = start * multiplier ** i
        print(x, "", end = "")
    print()

मुझे उपयोगकर्ता इनपुट के आधार पर एक पुनरावर्ती ज्यामितीय फ़ंक्शन बनाने की आवश्यकता है। मुझे पता है कि इसे गैर-पुनरावर्ती तरीके से कैसे संपर्क किया जाए, लेकिन मैं इसे पुनरावर्ती रूप से कैसे प्राप्त करूं? अग्रिम में धन्यवाद।

यानी: यदि उपयोगकर्ता इनपुट करता है

start = 1
multiplier = 2
length = 5
Output: 1, 2, 4, 8, 16

संपादित करें: सभी उदाहरणों के लिए धन्यवाद दोस्तों, मैं समझता हूं कि रिकर्सन अब कितना बेहतर है।

0
Sam 28 मार्च 2018, 21:10

2 जवाब

सबसे बढ़िया उत्तर

लूप के लिए निकालें। इसके बजाय तर्क में कमी के साथ फ़ंक्शन को पुनरावर्ती रूप से कॉल करें। एक पूर्णांक के साथ पैरामीटर के रूप में एक फ़ंक्शन बनाएं और इसे हर बार तब तक कॉल करें जब तक कि कोई शर्त पूरी न हो जाए।

 def geo(start, multiplier, length, i=0):

      if length <= 0:
           exit()    #or use a return statement

      x = start * multiplier ** i 
      print(x, "", end = "") 
      print()

      geo(start, multiplier, length-1, i+1)

 start = int(input()) 
 multiplier = int(input())
 length = int(input()) 
 i=0
 geo(start, multiplier, length, i)
0
Muhammad Taha Suhail 28 मार्च 2018, 18:27

किसी भी रिकर्सिव फ़ंक्शन के साथ आपको बेस केस और सामान्य (रिकर्सन) केस की आवश्यकता होती है।

आइए इनपुट प्राप्त करने के लिए अपने वर्तमान कोड से शुरू करें, लेकिन तुरंत मूल्य की गणना करने के बजाय हम एक पुनरावर्ती फ़ंक्शन को कॉल करेंगे।

def geo():

    start = int(input()) # starting number
    multiplier = int(input()) # the multiplier
    length = int(input()) # how long the list should be
    result = geo_rec(start, multiplier, length)
    print(result)


def geo_rec(start, multiplier, length):

    print(start) # As per your current program

    # Base case check
    if length = 0:
        return start

    # Recursive case
    else:
        start = start * multiplier
        length = length - 1
        geo_rec(start, multiplier, length)

अब विचार करें, यदि लंबाई 0 है तो हमें क्या मिलेगा? हम अभी शुरुआत करेंगे - यह अच्छा है। यदि लंबाई = 1, हम एक स्तर की पुनरावृत्ति करेंगे, और फिर वापसी शुरू करेंगे (जो इस बिंदु से हमारी मूल शुरुआत * गुणक होगी) - यह भी अच्छा है।

रिकर्सिव केस के प्रत्येक रन के साथ सूचना हम बेस केस के लिए उत्तरोत्तर अपना काम करते हैं?

0
Jinglesting 28 मार्च 2018, 18:26