2999. Функция-10

 

Дана функция, аргументы которой – неотрицательные целые числа m и n (mn):

Вычислить значение функции.

 

Вход. Два целых неотрицательных числа 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))