Xin chào các bạn. Chẳng qua là mình vừa mới học thêm 1 phương pháp mới trong lập trình là giải thuật đệ quy. Bài tập cho phương pháp này ( tất nhiên sẽ có rất nhiều nhưng mình chỉ lấy 1 bài tập làm ví dụ) là Tìm số hạng thứ n trong dãy Fibonacci ( bạn nào không biết thì search Google ). Dưới đây là code mình tự làm:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <string.h>
int fibonacci (int n);
int main()
{
int n;
printf("Type a number: ");
while ((scanf("%d", &n))!= EOF)
printf("The result is: %d\n", fibonacci(n));
return 1;
}
int fibonacci (int n)
{
if (n == 0)
return 1;
if (n == 1)
return 1;
if (n > 1)
return (fibonacci(n - 1))+(fibonacci(n - 2));
}
Đó. Ban đầu thì code mình chạy không đúng làm vì trong hàm Main mình để " return 0; " chứ không phải " return 1; ". Sau đó chạy không được, mình tìm hoài không biết lý do vì sao thì ngứa tay sửa số 0 thành số 1 thử và sau đó chạy thành công! Hơi hư cấu tí nhưng là sự thật, giờ mình cần 1 lời giải thích: Vì sao trong hàm Main lại là " return 1; " mà không phải " return 0; " và sao " return 1; " lại hoạt động?
Cảm ơn các bạn nhiều nhé! (Nhớ giải thích dễ hiểu, dài cũng được nhưng dễ hiểu vì mình trình độ còn non :))