fork download
  1. #include <stdio.h>
  2.  
  3. float A (int n, float * sum)
  4. {
  5. if (n <= 0) { *sum = 0; return 0; }
  6. if (n == 1) { *sum = 1; return 1; }
  7. if (n == 2) { *sum = 2; return 1; }
  8. float anm2 = A(n-2, sum); // store A(n-2). sum will be overwritten by A(n-1)
  9. float anm1 = A(n-1, sum); // store A(n-1) once to avoid calling A twice, and get preceding sum
  10. float an = ((8 * anm1*anm1) - 1)/anm2;
  11. *sum += an;
  12. printf ("index %d : term %g sum %g\n", n, an, *sum);
  13. return an;
  14. }
  15.  
  16. int main (void)
  17. {
  18. int n;
  19. float sum;
  20. printf("\nInput N of term an: ");
  21. scanf("%d",&n); printf("\n");
  22.  
  23. printf("\na%d=%f",n,A(n, &sum));
  24. printf("\n\nS(%d)=%f",n,sum);
  25. }
  26.  
Runtime error #stdin #stdout 0s 2252KB
stdin
9
stdout
Input N of term an: 
index 3 : term 7 sum 9
index 3 : term 7 sum 9
index 4 : term 391 sum 400
index 5 : term 174721 sum 175121
index 3 : term 7 sum 9
index 4 : term 391 sum 400
index 3 : term 7 sum 9
index 3 : term 7 sum 9
index 4 : term 391 sum 400
index 5 : term 174721 sum 175121
index 6 : term 6.24602e+08 sum 6.24777e+08
index 7 : term 1.78629e+13 sum 1.78635e+13
index 3 : term 7 sum 9
index 4 : term 391 sum 400
index 3 : term 7 sum 9
index 3 : term 7 sum 9
index 4 : term 391 sum 400
index 5 : term 174721 sum 175121
index 6 : term 6.24602e+08 sum 6.24777e+08
index 3 : term 7 sum 9
index 3 : term 7 sum 9
index 4 : term 391 sum 400
index 5 : term 174721 sum 175121
index 3 : term 7 sum 9
index 4 : term 391 sum 400
index 3 : term 7 sum 9
index 3 : term 7 sum 9
index 4 : term 391 sum 400
index 5 : term 174721 sum 175121
index 6 : term 6.24602e+08 sum 6.24777e+08
index 7 : term 1.78629e+13 sum 1.78635e+13
index 8 : term 4.08686e+18 sum 4.08688e+18
index 9 : term 7.48029e+24 sum 7.48029e+24

a9=7480289613705262181384192.000000

S(9)=7480293648930528305348608.000000