Nội dung chính
Đề bài
Viết chương trình tìm n số Fibonacci đầu tiên trong C#. Số nguyên dương n được nhập từ bàn phím.
Quy luật của dãy số Fibonacci: số tiếp theo bằng tổng của 2 số trước, 2 số đầu tiên của dãy số là 0, 1. Ví dụ: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
Lời giải
Có 2 cách để viết chương trình dãy số Fibonacci trong C#
- Tính dãy số Fibonacci trong C# không dùng phương pháp đệ quy
- Tính dãy số Fibonacci trong C# sử dụng phương pháp đệ quy
Tính dãy số Fibonacci không dùng phương pháp đệ quy
Ví dụ chương trình tính dãy số Fibonacci không sử dụng phương pháp đệ quy:
using System;
namespace VietTutsCsharp
{
class Program
{
static void Main(string[] args)
{
int i;
Console.Write("10 so dau tien cua day so Fibonacci: \n");
for (i = 0; i < 10; i++)
{
Console.Write("{0} ", fibonacci(i));
}
Console.WriteLine();
Console.ReadKey();
}
/**
* Tinh so Fibonacci thu n
*
* @param n: chi so cua so Fibonacci tinh tu 0
* vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2
* @return So Fibonacci thu n
*/
static int fibonacci(int n)
{
int f0 = 0;
int f1 = 1;
int fn = 1;
int i;
if (n < 0)
{
return -1;
}
else if (n == 0 || n == 1)
{
return n;
}
else
{
for (i = 2; i < n; i++)
{
f0 = f1;
f1 = fn;
fn = f0 + f1;
}
}
return fn;
}
}
}
Kết quả:
10 số đầu tiên của dãy số fibonacci: 0 1 1 2 3 5 8 13 21 34
Tính dãy số Fibonacci sử dụng phương pháp đệ quy
Ví dụ chương trình tính dãy số Fibonacci sử dụng phương pháp đệ quy:
using System;
namespace VietTutsCsharp
{
class Program
{
static void Main(string[] args)
{
int i;
Console.Write("10 so dau tien cua day so Fibonacci: \n");
for (i = 0; i < 10; i++)
{
Console.Write("{0} ", fibonacci(i));
}
Console.WriteLine();
Console.ReadKey();
}
/**
* Tính số fibonacci thứ n
*
* @param n: chỉ số của số fibonacci tính từ 0
* vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2
* @return số fibonacci thứ n
*/
public static int fibonacci(int n)
{
if (n < 0)
{
return -1;
}
else if (n == 0 || n == 1)
{
return n;
}
else
{
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
}
}
Kết quả:
10 số đầu tiên của dãy số fibonacci: 0 1 1 2 3 5 8 13 21 34