Love beautiful code? We do too.
Dãy Fibonacci tạo dãy các số bằng cách cộng hai số đằng trước. Dãy Fibonacci bắt đầu từ hai số: F0 & F1. Giá trị ban đầu của F0 & F1 có thể tương ứng là 0, 1 hoặc 1, 1.
Điều kiện của dãy Fibonacci là:
Fn = Fn-1 + Fn-2
Ví dụ một dãy Fibonacci:
F8 = 0 1 1 2 3 5 8 13
Ví dụ một dãy Fibonacci khác:
F8 = 1 1 2 3 5 8 13 21
Dưới đây là phần minh họa cho dãy Fibonacci trên:
Đầu tiên, giải thuật của chúng ta sẽ sử dụng vòng lặp để tạo dãy Fibonacci:
Bắt đầu giải thuật Fibonacci(n) khai báo f0, f1, fib, loop Thiết lập f0 là 0 Thiết lập f1 là 1 hiển thị f0, f1 for loop ← 1 tới n fib ← f0 + f1 f0 ← f1 f1 ← fib hiển thị dãy fib kết thúc for Kết thúc giải thuật
Tiếp theo, dựa vào đệ qui chúng ta sẽ thiết kế giải thuật cho dãy Fibonacci như sau:
Bắt đầu giải thuật Fibonacci(n) khai báo f0, f1, fib, loop Thiết lập f0 là 0 Thiết lập f1 là 1 hiển thị f0, f1 for loop ← 1 tới n fib ← f0 + f1 f0 ← f1 f1 ← fib hiển thị dãy fib kết thúc for Kết thúc giải thuật
#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");
getch();
}
Biên dịch và chạy chương trình C trên sẽ cho kết quả:
Hoclaptrinh.vn © 2017
From Coder With
Unpublished comment
Viết câu trả lời