Дана функция, аргументы которой –
неотрицательные целые числа m и n (m
≤ n):
Вычислить значение
функции.
Вход. Два целых
неотрицательных числа n и m (0 ≤ n, m ≤
20).
Выход. Выведите
искомое значение заданной функции f(m,
n).
Пример входа |
Пример выхода |
4 2 |
6 |
рекурсия
В задаче
следует реализовать заданную рекурсивную функцию.
Обратите
внимание, что на вход переменные поступают в порядке n, m, а в
функцию они передаются в обратном порядке: f(m, n).
Реализация алгоритма
Рекурсивная
реализация функции f:
int f(int m, int n)
{
if (m == 0) return 1;
if (m == n) return 1;
return
f(m-1,n-1) + f(m,n-1);
}
Основная
часть программы. Читаем входные данные, вычисляем и выводим результат.
scanf("%d %d",&n,&m);
res = f(m,n);
printf("%d\n",res);
Java реализация
import java.util.*;
public class Main
{
static int f(int m, int n)
{
if (m == 0) return 1;
if (m == n) return 1;
return f(m-1,n-1) + f(m,n-1);
}
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
int m = con.nextInt();
int res = f(m,n);
System.out.println(res);
con.close();
}
}
Python реализация
Рекурсивная
реализация функции f:
def f(m, n):
if m == n or m == 0:
return 1
return f(m-1, n-1) + f(m, n - 1)
Основная
часть программы. Читаем входные данные, вычисляем и выводим результат.
a, b = map(int, input().split())
print(f(b, a))