जहां तक मैं समझता हूं, कम फ़ंक्शन एक सूची l
और एक फ़ंक्शन f
लेता है। फिर, यह सूची के पहले दो तत्वों पर f
फ़ंक्शन को कॉल करता है और फिर अगली सूची तत्व और पिछले परिणाम के साथ फ़ंक्शन f
को बार-बार कॉल करता है।फ़ंक्शन कैसे काम कम करता है?
तो, मैं निम्नलिखित कार्यों को परिभाषित:
निम्नलिखित समारोह भाज्य गणना करता है।
def fact(n):
if n == 0 or n == 1:
return 1
return fact(n-1) * n
def reduce_func(x,y):
return fact(x) * fact(y)
lst = [1, 3, 1]
print reduce(reduce_func, lst)
अब, यह मुझे ((1! * 3!) * 1!) = 6
नहीं देना चाहिए? लेकिन, इसके बजाय यह 720
देता है। 720
क्यों? ऐसा लगता है कि 6
का फैक्टोरियल भी लगता है। लेकिन, मुझे समझने की जरूरत क्यों है।
क्या कोई बता सकता है कि ऐसा क्यों होता है और एक कार्य-आसपास?
मैं मूल रूप से सूची में सभी प्रविष्टियों के फैक्टोरियल के उत्पाद की गणना करना चाहता हूं। बैकअप योजना एक लूप चलाने और इसे गणना करने के लिए है। लेकिन, मैं कम करने का उपयोग करना पसंद करेंगे।
सभी को धन्यवाद। मैंने मूर्खतापूर्ण चीज को समझ लिया जो मुझे याद आया। और मैंने जवाब में ऐसा करने का सही तरीका पोस्ट किया है। – Divya
* कम * की गहरी समझ के लिए, नीचे दिखाए गए अपने शुद्ध पायथन समकक्ष देखें। –