एक समय की बात है, एक बुद्धिमान नौकर ने एक राजकुमार की जान बचाई। राजा ने वादा किया कि नौकर जो भी माँगेगा, वह उसे देगा। राजा को शतरंज बहुत पसंद था। यह जानकर नौकर ने राजा से कहा कि उसे गेहूँ के दाने चाहिए। शतरंज के बोर्ड के पहले खाने पर एक दाना, और हर अगले खाने पर दानों की संख्या दोगुनी।
शतरंज के बोर्ड पर गेहूँ के दानों की संख्या निकालिए।
शतरंज के बोर्ड में 64 खाने होते हैं। खाना 1 पर एक दाना होता है, खाना 2 पर दो दाने, खाना 3 पर चार दाने, और इसी तरह हर बार संख्या दोगुनी होती जाती है।
ऐसा कोड लिखिए जो यह निकालता है:
इस तरह की समस्याएँ, जिनमें एक उत्तर पिछले उत्तर पर निर्भर होता है, अक्सर रिकर्शन कहलाती हैं। रिकर्शन के लिए कोड लिखने के कई अलग-अलग तरीके हैं। अगर आप इससे परिचित नहीं हैं, तो इसके बारे में थोड़ा अध्ययन करना फायदेमंद रहेगा। Pharo रिकर्शन के लिए अच्छी तरह ऑप्टिमाइज़ किया गया है, और यह एक आम तौर पर इस्तेमाल होने वाला पैटर्न है।
ध्यान दें: मूल समस्या विवरण में grainsCalculator को #square से कॉल किया जाता है। हमने इस मेथड का नाम बदलकर #atSquare: कर दिया है, जो Smalltalk जैसा नाम है और यह बेहतर बताता है कि आप किसी उत्तर को "at a square" पर माँग रहे हैं।