fork download
  1. #include <stdio.h>
  2.  
  3. long silnia(int a)
  4. {
  5. int i;
  6. long s = 1;
  7. if (a > 1)
  8. {
  9. for (i = 1; i <= a; i++)
  10. {
  11. s *= i;
  12. }
  13. }
  14. return s;
  15. }
  16.  
  17. long newton(int n, int k)
  18. {
  19. return silnia(n)/(silnia(k)*silnia(n-k));
  20. }
  21.  
  22. unsigned long int newton_rek(long int n ,long int k)
  23. {
  24. if ( n == k || k == 0 )
  25. {
  26. return 1;
  27. }
  28.  
  29. if (k > n)
  30. {
  31. return 0;
  32. }
  33.  
  34. else return newton_rek(n-1,k-1) + newton_rek(n-1,k);
  35. }
  36.  
  37. int main(void) {
  38. const long nmax = 12;
  39. long n, k;
  40. unsigned long x;
  41.  
  42. printf( "newton_rek:\n");
  43. for( n = 0; n < nmax; n++ ) {
  44. for( k = 0; k <= n; k++ ) {
  45. x = newton_rek(n,k);
  46. printf( "%u ", x );
  47. }
  48. printf( "\n" );
  49. }
  50.  
  51. printf( "\nnewton:\n");
  52. for( n = 0; n < nmax; n++ ) {
  53. for( k = 0; k <= n; k++ ) {
  54. x = (unsigned long)newton(n,k);
  55. printf( "%u ", x );
  56. }
  57. printf( "\n" );
  58. }
  59.  
  60. return 0;
  61. }
Success #stdin #stdout 0.01s 1676KB
stdin
Standard input is empty
stdout
newton_rek:
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1 
1 10 45 120 210 252 210 120 45 10 1 
1 11 55 165 330 462 462 330 165 55 11 1 

newton:
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1 
1 10 45 120 210 252 210 120 45 10 1 
1 11 55 165 330 462 462 330 165 55 11 1