Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BÀI 12: viết chương trình tìm số Fibonacci thứ n.
- CODE 1:
- #include<stdio.h>
- #include<conio.h>
- long fibonaci(int);
- int main()
- {
- int n;
- printf("Nhap n=");
- scanf("%d",&n);
- printf("\n%ld",fibonaci(n));
- getch();
- return 0;
- }
- long fibonaci(int n)
- {
- return (n==0||n==1)?1:fibonaci(n-1)+fibonaci(n-2);
- }
- CODE 2:
- // cau 17:viet ham tra ve so fibonacy thu n
- #include<stdio.h>
- #include<conio.h>
- unsigned long int fib(int n)
- {
- int i;
- if(n==1||n==2)
- return 1;
- else
- return (fib(n-1)+fib(n-2));
- }
- // ham chinh:
- void main()
- {
- int n;
- clrscr();
- vao:
- printf("\n Nhap vao:n=");
- scanf("%d",&n);
- if(n<=0)
- {
- printf("\n Ban nhap sai gia tri cua n.Vui long nhap lai");
- getch(); goto vao;
- }
- else
- printf("\n So fibonacy %d la:%u",n,fib(n));
- getch();
- }
- CODE 3: (CODE TEST TỐT)
- #include <stdio.h>
- #include <conio.h>
- void tinhheso(long* a11, long* a12, long* a21, long* a22, int n)
- {
- long _a11, _a12, _a21, _a22;
- long x11, x12 ,x21, x22;
- if(n == 1){
- *a11 = 0;
- *a12 = *a21 = *a22 = 1;
- return ;
- }
- if(n == 2){
- *a11 = *a12 = *a21 = 1;
- *a22 =2;
- return ;
- }
- tinhheso(&_a11,&_a12,&_a21,&_a22,n/2);
- *a11 = _a11*_a11 + _a12*_a21;
- *a12 = _a11*_a12 + _a12*_a22;
- *a21 = _a21*_a11 + _a22*_a21;
- *a22 = _a21*_a12 + _a22*_a22;
- if(n%2 == 0) return ;
- else{
- /*Tinh he so ma tran A^(n/2) * A^(n/2)*/
- x11 = *a11;
- x12 = *a12;
- x21 = *a21;
- x22 = *a22;
- /*Tinh he so ma tran A^n*/
- *a11 = x12;
- *a12 = x11 + x12;
- *a21 = x22;
- *a22 = x21 + x22;
- }
- }
- int main()
- {
- int n;
- long a11, a12, a21, a22;
- do{
- printf("Nhap n: ");
- scanf("%d", &n);
- if(n == 0) {
- printf("F(0) = 1\n");
- continue;
- }
- tinhheso(&a11, &a12, &a21, &a22, n);
- printf("F(%d) = %ld\n", n, a11 + a21);
- }while(getch()!=27);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment