fork download
  1. #include <stdio.h>
  2.  
  3. int fib1(int n) {
  4. if (n == 0) return 0;
  5. if (n == 1) return 1;
  6.  
  7. int a = 0, b = 1, c;
  8. for (int i = 2; i <= n; i++) {
  9. c = a + b;
  10. a = b;
  11. b = c;
  12. }
  13. return b;
  14. }
  15. int fib2(int n) {
  16. if (n == 0) return 0;
  17.  
  18. int fib[n + 1];
  19. fib[0] = 0;
  20. fib[1] = 1;
  21.  
  22. for (int i = 2; i <= n; i++) {
  23. fib[i] = fib[i - 1] + fib[i - 2];
  24. }
  25.  
  26. return fib[n];
  27. }
  28. int fib3(int n) {
  29. if (n == 0) return 0;
  30. if (n == 1) return 1;
  31.  
  32. return fib3(n - 1) + fib3(n - 2);
  33. }
  34.  
  35.  
  36. int main(void) {
  37. int n;
  38. printf("非負の整数nを入力してください:");
  39. scanf("%d", &n);
  40.  
  41. printf("fib1(%d) = %d\n", n, fib1(n));
  42. printf("fib2(%d) = %d\n", n, fib2(n));
  43. printf("fib3(%d) = %d\n", n, fib3(n));
  44.  
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 0s 5308KB
stdin
10
stdout
非負の整数nを入力してください:fib1(10) = 55
fib2(10) = 55
fib3(10) = 55