Создайте столбец, который является комбинацией других столбцов

Одна вещь, которую я вижу, заключается в том, что ваш цикл for внутри main работает только через 2 настоящие итерации, один раз для i == 0 и снова для i == 1.

Для расширения taylor для работы довольно эффективно, его нужно запускать через более последовательности (больше итераций цикла).

другое, что я вижу, это то, что ваш знаменатель является n! а не (2 * n)!

Для эффективности я мог бы также реализовать факториальную процедуру следующим образом:

unsigned int factorial(int n){
    unsigned int product = 1;

    for(int I = 1; I <= n; I++) product *= I;

    return product;
}

Вышеупомянутая факториальная процедура предназначена для более точного факториала, которые, возможно, вам не нужны для этой цели. Для ваших целей, возможно, вариант с плавающей точкой может быть достаточно хорошим.

float factorial(int n){
    float product = 1;

    for(int I = 1; I <= n; I++) product *= (float)I;

    return product;
}

Также я должен отметить, почему я заявляю, что выполняю факториал таким образом. В общем случае конструкция цикла будет более эффективной, чем ее рекурсивная копия. Ваша текущая реализация рекурсивна, и, таким образом, реализация, которую я предоставляю, ДОЛЖНА быть более эффективной как от производительности, так и от использования памяти.

1
задан user3294195 5 March 2019 в 15:30
поделиться