Вот программа на Python, которая использует рекурсию для нахождения суммы факториалов заданного числа:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
def sum_factorial(n):
if n == 0:
return 1
else:
return factorial(n) + sum_factorial(n - 1)
# Test the program
number = 5
result = sum_factorial(number)
print(f"The sum of factorials up to {number} is: {result}")
Эта программа определяет две рекурсивные функции. Функция factorial()
вычисляет факториал заданного числа n
. Функция sum_factorial()
использует функцию factorial()
для вычисления факториала каждого числа от n
до 0, а затем суммирует их.
Вот несколько альтернативных методов нахождения суммы факториалов с помощью рекурсии:
Метод 1. Использование вспомогательной функции
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
def sum_factorial(n):
def helper(n, acc):
if n == 0:
return acc
else:
return helper(n - 1, acc + factorial(n))
return helper(n, 0)
# Test the program
number = 5
result = sum_factorial(number)
print(f"The sum of factorials up to {number} is: {result}")
В этом методе мы определяем вспомогательную функцию helper()
внутри функции sum_factorial()
. Функция helper()
принимает дополнительный параметр acc
для отслеживания накопленной суммы. Он рекурсивно вычисляет сумму факториалов, добавляя факториал текущего числа к накопленной сумме.
Метод 2. Использование одной рекурсивной функции
def sum_factorial(n):
if n == 0:
return 1
else:
return sum_factorial(n - 1) + factorial(n)
# Test the program
number = 5
result = sum_factorial(number)
print(f"The sum of factorials up to {number} is: {result}")
В этом методе мы используем одну рекурсивную функцию sum_factorial()
для вычисления суммы факториалов. Он рекурсивно вызывает себя с уменьшающимся значением n
и добавляет факториал текущего числа к результату рекурсивного вызова.