রিকার্শন বলতে বোঝায় নিজের কাজ নিজে করা। ব্যাপারটা এমন যে তুমি আয়নার সামনে দাঁড়িয়ে নিজেকে প্রশ্ন করছ এবং নিজেই তার উত্তর দিচ্ছ। আমরা একটা নির্দিষ্ট করার জন্য একটি ফাংশন তৈরি করি। যদি এমন হয় যে সে একই কাজটি ওই ফাংশনের ভিতর কোন একটা জায়গায় আবার করা লাগছে তখন আমরা ওই ফাংশনের ভেতরেই আবার তাকে-ই কল করি। একেই বলে রিকার্শন। উদাহরণঃ
deffactorial(n):print("factorial function has been called with n = "+str(n))if n ==1:return1else: result = n *factorial(n-1)return resultprint("Final result %s"%(factorial(5)))
আউটপুটঃ
factorial function has been called with n = 5
factorial function has been called with n = 4
factorial function has been called with n = 3
factorial function has been called with n = 2
factorial function has been called with n = 1
final result 120
এ factorial ফাংশন টি প্রথমে 5 এর জন্য এক্সিকিউট হওয়া শুরু হয় এবং যেহেতু n == 1 নয় তাই প্রোগ্রামটি else স্টেট্মেন্টে ঢুকে। তারপরের লাইনে result কাউন্ট করার সময় factorial ফাংশন নিজেকেই আবার কল করে এবং তখন আর্গুমেন্ট n এর মান হল (n-1)=(5-1)=4 এভাবে একই ভাবে 1 পর্যন্ত এক্সিকিউট করে এবং রেজাল্ট রিটার্ন করে। এখানে আমাদের ফাংশনটি n=1 এর জন্য শেষ হয়েছে। এইকন্ডিশন কে বলা হয় বেজ কন্ডিশন। কোন রিকার্সিব ফাংশনে যদি বেজ কন্ডিশন না থাকে তাহলে ফাংশনটি ইনফাইনাইটলি চলতে থাকবে।