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