Advertisement
Guest User

Untitled

a guest
Sep 26th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.06 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int numOfRecursiveCalls;
  4.  
  5. void calculatePolynomial(double*, double*, int, double, double);
  6.  
  7. int main() {
  8.     int n;
  9.  
  10.     double x0;
  11.     double result = 0.0;
  12.  
  13.     printf("Enter n: ");
  14.     scanf("%d", &n);
  15.  
  16.     if(n < 0) {
  17.         printf("\nThe power must be greater or equal to 0.");
  18.         return 1;
  19.     }
  20.  
  21.     n++;
  22.  
  23.     printf("\nEnter x0: ");
  24.     scanf("%lf", &x0);
  25.  
  26.     printf("\n");
  27.  
  28.     double* a = (double*) malloc(n * sizeof(double));
  29.  
  30.     for(int i = 0; i < n; i++) {
  31.         printf("Enter a[%d] element: ", i);
  32.         scanf("%lf", a + i);
  33.     }
  34.  
  35.     calculatePolynomial(&result, a, n - 1, 1, x0);
  36.  
  37.     printf("\nResult: %.2lf\nNumber of recursive calls: %d\n", result, numOfRecursiveCalls);
  38.  
  39.  
  40.     free(a);
  41.  
  42.     return 0;
  43. }
  44.  
  45. void calculatePolynomial(double* result, double* a, int i, double multiplier, double x0) {
  46.     if(i < 0) {
  47.         return;
  48.     }
  49.  
  50.     numOfRecursiveCalls++;
  51.  
  52.     *result = *result + a[i] * multiplier;
  53.  
  54.     return calculatePolynomial(result, a, --i, multiplier * x0, x0);
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement