Разработать программу для вычисления значений заданных выражений - C (СИ)

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

Задано натуральные n и m. Разработать программу для вычисления значений заданных выражений. При вычислении выражений использовать рекурсивные процедуры или функции. Условие - Почему-то функция znamennuk неправильно вычисляет значение.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int power (int m)
{
   if (m == 1) return 2;
   else return 2*power(m-1);
}
 
double fact (int n)
{
   if(n <= 2) return n;
   else return n*fact(n-1);
}
 
float znamennuk (int n)
{
   if (n == 1) return (float)1/3;
   else return ((float)1/3)*(sqrt(1/fact(n-1)+znamennuk(n-1)));
}
 
void main()
{
   int m, n;
   printf("Enter N= ");
   scanf("%d", &n);
   printf("Enter M= ");
   scanf("%d", &m);
  //printf("pow 2^%d= %d\n", m, power(m));
  // printf("fact(%d)= %lf\n", n,fact(n));
  //printf("znamennuk= %f\n", znamennuk(n));
   printf("Result= %f\n", power(m)/znamennuk(n));
 
getch();
}

Код к задаче: «Разработать программу для вычисления значений заданных выражений - C (СИ)»

textual
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int n;
 
int power (int m)
{
   if (m == 1) return 2;
   else return 2*power(m-1);
}
 
double fact (int n)
{
   if(n <= 2) return n;
   else return n*fact(n-1);
}
 
float znamennuk (int k)
{
   if (k > n)
       return 0.0;
   else
       return 1./3 * sqrt(1. / fact(k) + znamennuk(k+1));
}
 
int main()
{
   int m;
   printf("Enter N= ");
   scanf("%d", &n);
   printf("Enter M= ");
   scanf("%d", &m);
   printf("Result= %f\n", power(m)/znamennuk(1));
return 0;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

13   голосов, оценка 3.923 из 5


СДЕЛАЙТЕ РЕПОСТ