Функція-10#2999

Функція-10 (Розбір)

У задачі слід реалізувати задану рекурсивну функцію.

Зверніть увагу, що у вхідних даних значення змінних задаються в порядку , тоді як у функцію вони передаються в зворотному порядку: 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))