fork download
  1. #include <stdio.h>
  2.  
  3. int fib1(int n);
  4. int fib2(int n);
  5. int fib3(int n);
  6.  
  7. int main(void) {
  8. int n;
  9.  
  10. scanf("%d",&n);
  11. printf("n = %d\n",n);
  12.  
  13. printf("fib1(%d) = %d\n",n,fib1(n));
  14. printf("fib2(%d) = %d\n",n,fib2(n));
  15. printf("fib3(%d) = %d\n",n,fib3(n));
  16.  
  17.  
  18. return 0;
  19. }
  20.  
  21. int fib1(int n){
  22. int a = 0,b = 1,c;
  23. int i;
  24.  
  25. if(n == 0){
  26. return 0;
  27. }else if(n == 1){
  28. return 1;
  29. }
  30.  
  31. for(i = 2;i <= n;i ++){
  32. c = a + b;
  33. a = b;
  34. b = c;
  35. }
  36.  
  37. return b;
  38.  
  39. }
  40.  
  41. int fib2(int n){
  42. int f[n+1];
  43. int i;
  44.  
  45. f[0] = 0;
  46. if(n == 0){
  47. return f[0];
  48. }
  49.  
  50. f[1] = 1;
  51. for(i = 2;i <= n;i ++){
  52. f[i] = f[i-1] + f[i-2];
  53. }
  54.  
  55. return f[n];
  56.  
  57. }
  58.  
  59. int fib3(int n){
  60.  
  61. if(n == 0){
  62. return 0;
  63. }else if(n == 1){
  64. return 1;
  65. }else{
  66. return fib3(n-1) + fib3(n-2);
  67. }
  68. }
Success #stdin #stdout 0s 5320KB
stdin
5
stdout
n = 5
fib1(5) = 5
fib2(5) = 5
fib3(5) = 5