Dãy Fibonacci trong C




Bài tập

Chắc bạn đã khá quen thuộc với dãy Fibonacci là gì rồi. Đó là dãy số mà số tiếp theo là tổng của hai số liền trước, ví dụ: 0, 1, 1, 2, 3, 5, 8, 13, .... với hai số đầu tiên là 0 và 1. Trong chương này, mình sẽ trình bày hai cách để in dãy Fibonacci, đó là không sử dụng đệ qui và sử dụng đệ qui.

Chương trình in dãy Fibonacci không sử dụng hàm đệ qui trong C

#include<stdio.h>  
#include<conio.h>  

int main()  
{  
 int n1=0,n2=1,n3,i,sopt;  
  
 printf("Ban hay nhap so phan tu trong day Fibonacci: ");  
 scanf("%d",&sopt);  
 printf("\n%d %d",n1,n2);  //in hai so 0 va 1  
  
 for(i=2;i<sopt;++i)   //vong lap bat dau tu 2 boi vi 0 va 1 da duoc in 
 {  
  n3=n1+n2;  
  printf(" %d",n3);  
  n1=n2;  
  n2=n3;  
 }  
 
 printf("\n\n===========================\n");
 printf("VietJack chuc cac ban hoc tot!");
getch();  
}  

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Dãy Fibonacci trong C

Chương trình in dãy Fibonacci sử dụng hàm đệ qui trong C

#include<stdio.h>  
#include<conio.h>  

// khai bao ham indayFibonacci
void indayFibonacci(int n){  
    static int n1=0,n2=1,n3;  
    if(n>0){  
         n3 = n1 + n2;  
         n1 = n2;  
         n2 = n3;  
         printf("%d ",n3);  
         indayFibonacci(n-1);  
    }  
}  

// ham main de in day Fibonacci
int main(){  
    int n;  
    
    printf("Ban hay nhap so phan tu trong day Fibonacci: ");  
    scanf("%d",&n);  
  
    printf("Hien thi day Fibonacci tren man hinh\n\n");  
    printf("%d %d ",0,1);  
    indayFibonacci(n-2);  //n-2 boi vi 2 phan tu dau tien da duoc in 
    
    printf("\n\n===========================\n");
    printf("VietJack chuc cac ban hoc tot!");
  
    getch();  
}  

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Dãy Fibonacci trong C