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