thien

BÀI 12

Mar 2nd, 2015
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. BÀI 12: viết chương trình tìm số Fibonacci thứ n.
  2.  
  3. CODE 1:
  4.  
  5. #include<stdio.h>
  6. #include<conio.h>
  7.  
  8. long fibonaci(int);
  9. int main()
  10. {
  11.  
  12. int n;
  13. printf("Nhap n=");
  14. scanf("%d",&n);
  15. printf("\n%ld",fibonaci(n));
  16. getch();
  17. return 0;
  18. }
  19. long fibonaci(int n)
  20. {
  21. return (n==0||n==1)?1:fibonaci(n-1)+fibonaci(n-2);
  22. }
  23.  
  24.  
  25.  
  26.  
  27. CODE 2:
  28.  
  29. // cau 17:viet ham tra ve so fibonacy thu n
  30. #include<stdio.h>
  31. #include<conio.h>
  32. unsigned long int fib(int n)
  33. {
  34. int i;
  35. if(n==1||n==2)
  36. return 1;
  37. else
  38. return (fib(n-1)+fib(n-2));
  39. }
  40. // ham chinh:
  41. void main()
  42. {
  43. int n;
  44. clrscr();
  45. vao:
  46. printf("\n Nhap vao:n=");
  47. scanf("%d",&n);
  48. if(n<=0)
  49. {
  50. printf("\n Ban nhap sai gia tri cua n.Vui long nhap lai");
  51. getch(); goto vao;
  52. }
  53. else
  54. printf("\n So fibonacy %d la:%u",n,fib(n));
  55. getch();
  56. }
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63. CODE 3: (CODE TEST TỐT)
  64.  
  65. #include <stdio.h>
  66. #include <conio.h>
  67.  
  68. void tinhheso(long* a11, long* a12, long* a21, long* a22, int n)
  69. {
  70. long _a11, _a12, _a21, _a22;
  71. long x11, x12 ,x21, x22;
  72. if(n == 1){
  73. *a11 = 0;
  74. *a12 = *a21 = *a22 = 1;
  75. return ;
  76. }
  77. if(n == 2){
  78. *a11 = *a12 = *a21 = 1;
  79. *a22 =2;
  80. return ;
  81. }
  82. tinhheso(&_a11,&_a12,&_a21,&_a22,n/2);
  83. *a11 = _a11*_a11 + _a12*_a21;
  84. *a12 = _a11*_a12 + _a12*_a22;
  85. *a21 = _a21*_a11 + _a22*_a21;
  86. *a22 = _a21*_a12 + _a22*_a22;
  87. if(n%2 == 0) return ;
  88. else{
  89. /*Tinh he so ma tran A^(n/2) * A^(n/2)*/
  90. x11 = *a11;
  91. x12 = *a12;
  92. x21 = *a21;
  93. x22 = *a22;
  94.  
  95. /*Tinh he so ma tran A^n*/
  96. *a11 = x12;
  97. *a12 = x11 + x12;
  98. *a21 = x22;
  99. *a22 = x21 + x22;
  100. }
  101. }
  102.  
  103. int main()
  104. {
  105. int n;
  106. long a11, a12, a21, a22;
  107. do{
  108. printf("Nhap n: ");
  109. scanf("%d", &n);
  110. if(n == 0) {
  111. printf("F(0) = 1\n");
  112. continue;
  113. }
  114. tinhheso(&a11, &a12, &a21, &a22, n);
  115. printf("F(%d) = %ld\n", n, a11 + a21);
  116. }while(getch()!=27);
  117. return 0;
  118. }
Advertisement
Add Comment
Please, Sign In to add comment