АСОСҲОИ АЛГОРИТМ ВА БАРНОМАСОЗӢ БО ЗАБОНИ PYTHON

def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
n = int(input('Адади бутуни аз 0 то 100-ро ворид кунед: ')) if 0 <= n <= 100:
print(factorial(n)) else:
print('Дар ин мисол адади аз 0 то 100 лозим аст.')
Барои n = 3 натиҷа 6 ва барои n = 0 натиҷа 1 аст. Маҳдудияти 100 барои мисоли омӯзишӣ интихоб шудааст ва таърифи математикии факториалро маҳдуд намекунад.
Агар рекурсия ба шарти қатъ нарасад, занҷири даъватҳо идома меёбад. Python умқи рекурсияро маҳдуд мекунад ва ҳангоми гузаштан аз ин ҳудуд RecursionError медиҳад.
Ду сабаби маъмултарини рекурсияи беохир инҳоянд:
1 Хатогии навиштани баромади рекурсия. Масалан, агар мо фаромӯш кунем, ки оё n == 0 дар барномаи ҳисобкунии факториалӣ санҷида шавад, пас факториал (0) факториал (-1)-ро, ки факториал (-2)-ро ва ғайраро даъват мекунад, даъват мекунад.
2 Таъиноти нодурусти параметрҳо дар функсияҳо. Масалан, агар функсияи factorial(n) factorial(n)-ро даъват кунад, шумо инчунин занҷири беохирро мегиред.
Аз ин рӯ, ҳангоми таҳияи функсияи рекурсивӣ, пеш аз ҳама, шарти қатъ кардани рекурсияро, ки онро шарти асосии рекурсия низ меноманд, ба расмият даровардан лозим аст.
Рекурсияи пеш ва қафо
Амалҳое, ки функсия пеш аз ворид шудан ба сатҳи ояндаи рекурсия иҷро мекунад, амалҳои рекурсияи пешрафта ва амалҳое, ки ҳангоми бозгашт аз сатҳи амиқтар ба сатҳи ҷорӣ иҷро мешаванд, амалҳои рекурсияи бозгашт номида мешаванд.
Масъала. Адади бутуни ғайриманфиро дар системаи дуӣ нишон диҳед. Барои гирифтани рақами охирини дуӣ боқимондаи тақсим ба 2-ро меёбем. Барои гирифтани қисми боқимондаи адад аз тақсими бутун ба 2 истифода мекунем.

Барномасозӣ
Олами Афсонаҳо
Ахбор
Саломатӣ
Дунё