Индийский метод (рекурсия) Си - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Написать функцию, которая вычисляет целочисленный степень заданного дробного аргумента, используя так называемый быстрый индийский метод (см. Картинка) Сформировать массив с K случайных дробных чисел в диапазоне 1..100 (отдельно сгенерировать целую и дробную части числа). На основе разработанной функции напечатать таблицу сгенерированих чисел и их степеней (как минимум трёх - четырёх).

Решение задачи: «Индийский метод (рекурсия) Си»

textual
Листинг программы
#include <stdio.h>
 
double indian(double x, unsigned int n)
{
    if (n == 0) { return 1.0; }
    double xn2 = indian(x, n / 2);
    return (n & 1) == 0 ? xn2 * xn2 : x * xn2 * xn2;
}
 
int main(void)
{
    printf("%f\n", indian(1.1, 100));
    return 0;
}

Объяснение кода листинга программы

  1. Включаем файл стандартного ввода/вывода
  2. Определяем функцию indian с двумя аргументами double x, unsigned int n
  3. Проверяем базовый случай: если n равно 0, то возвращаем 1.0
  4. Рекурсивно вызываем функцию indian с аргументами x и n/2 и сохраняем результат в переменную xn2
  5. Используем оператор побитового И (&) для проверки: если младший бит (бита 0) числа n равен 0, то возвращаем квадрат xn2, иначе - умножаем x на xn2, взятый по модулю 2 (возведение в квадрат)
  6. В функции main() выводим результат вызова функции indian с аргументами 1.1 и 100
  7. Возвращаем 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы