Разработать рекурсивную функцию, которая вычисляет значение следующего выражения - C (СИ)
Формулировка задачи:
Разработать рекурсивную функцию, которая вычисляет значение следующего выражения:
d(1)=0; d(2)=1; d(n)=(n-1)*[d(n-1)+d(n-2)]
И на основе разработанной функции найти значение выражения для заданного натурального n.
Решение задачи: «Разработать рекурсивную функцию, которая вычисляет значение следующего выражения»
textual
Листинг программы
#include <stdio.h> long dBad(int n) { if (n <= 2) return n-1; else return (n-1)*(dBad(n-1)+dBad(n-2)); } long dGood(int n, int c, int p,int k) { if (n == k-1) return c; else return dGood(n,(k-1)*(p+c),c,k+1); } int main(int argc, char* argv[]) { int k; k=12; printf("k=%d d(k)=%d\n",k,dBad(k)); printf("k=%d d(k)=%d\n",k,dGood(k,1,0,1)); return 0; }
Объяснение кода листинга программы
- Включаем стандартную библиотеку
- Определяем функцию dBad, которая принимает целочисленный аргумент n и возвращает результат вычисления выражения
- Используем оператор if для проверки условия, если n меньше или равно 2, то возвращаем n-1
- В противном случае, рекурсивно вызываем функцию dBad с аргументами n-1 и n-2, затем умножаем результат на (n-1) и возвращаем полученное значение
- Определяем функцию dGood, которая принимает целочисленные аргументы n, c, p и k, и возвращает результат вычисления выражения
- Используем оператор if для проверки условия, если n равно k-1, то возвращаем c
- В противном случае, рекурсивно вызываем функцию dGood с аргументами n, (k-1)*(p+c), c и k+1
- В функции main определяем целочисленную переменную k и присваиваем ей значение 12
- Вызываем функцию dBad с аргументом k и выводим результат на экран
- Вызываем функцию dGood с аргументами k, 1, 0 и 1, и выводим результат на экран
- Завершаем программу возвратом 0 из функции main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д