Hiện tại em là sinh viên năm 1 em đã học được các ngôn ngữ như HTML,CSS,C…đến nay thì đang học C++, nhưng thấy cái đệ quy nó trừu tượng e vẫn chưa hiểu rõ nó được.Nếu em phát triển theo hướng dev web thì cái đệ qui nó quan trọng với cái hướng đi của em không ?
Cảm ơn đã xem
Thắc mắc về đệ quy
Bạn làm cho duyệt đc cây là xong.
Ý bác là cây tìm kiếm nhị phân ?
Đệ quy tức là một hàm gọi chính nó thôi mà, có gì mà khó hiểu?
Nếu e đi theo hướng web thì nó quan trọng không anh ?
Cám ơn bác giờ em mới hiểu từ đệ quy là gì. Dùng bao năm mà chưa biết tên em nó
Cái này cần thiết trong mọi ngôn ngữ lập trình bác à, nó chỉ là một cách viết thuật toán để lập trình thôi, thay vì viết đệ quy, bác vẫn có cách khác để viết 1 chương trình cùng chức năng nhưng có lúc viết đệ quy nó đơn giản hơn.
int factorial(n)
{
if (n <= 1)
return 1;
else
return n * factorial(n-1);
}
Nếu bạn chỉ ngồi “vẽ” html, css cho các trang web doanh nghiệp, blog… thì không cần
Còn nếu theo hướng lập trình thì cần
Cảm ơn bác em hình dung ra được rồi
Còn muốn tiến lên back-end thì sao bác ?
back-end thì cũng là lập trình mà
Em cũng chỉ là sinh viên ham chơi thôi, không có kinh nghiệm gì đâu XD
Em mới năm 1 thôi
Theo mình nghĩ thì đệ quy nó cũng chỉ là một hình thức thể hiện của lặp thôi bạn. Nó là một phần của việc thể hiện thuật toán.
Ví dụ về hàm tính giai thừa theo cách không đệ quy:
int GiaiThua(int Input)
{
int Output = 1;
for (int i = Input; i > 1; i -= 1)
Output *= i;//Cái này dựa trên lý thuyết GiaiThua(n) = n*(n-1)*(n-2)*...*1
return Output;
}
và hàm tính giai thừa theo cách đệ quy:
int GiaiThua(int Input)
{
if (Input <= 1)
return 1;//Giai thừa của 0 hoặc 1 thì bằng 0
return Input * GiaiThua(Input - 1)//n! = n*(n-1)*(n-2)*...*1 = n*(n-1)!
}
coder web Front End nói theo kiểu nhà quê chỗ tui là mấy đứa designer web, mấy ẻm tuyển từ trường thiết kế ra, nghệ sĩ chảnh chảnh kiểu họa sĩ vậy đó.
còn back end bác phải học cho tốt lập trình đa ngôn ngư, server, data base, security. nhất là khoản data base và security.
Front-end toàn từ trường thiết kế ra hết hả bác @.@
Cái này chỉ mới có dạng tuyến tính thôi.
Em cảm ơn bác Em hình dung ra được rồi
Lầm to. Cái này mới là phần 1 thôi. Còn 2 3 4 nữa.
Thường thì, phương thức đệ quy khó hiểu hơn phương thức không đệ quy. Tuy nhiên, đôi khi việc khử đệ quy sẽ dẫn đến một kết quả khá khó hiểu (dù đúng):
Dãy số Fibonacci dạng đệ quy: F(0) = 1, F(1) = 1, F(n) = F(n-1) + F(n-2) với n ≥ 2
:
int Fibonacci(int Posision)
{
if (Posision < 2)
return 1;
return Fibonacci(Posision - 1) + Fibonacci(Posision - 2);
}
Và dạng không đệ quy (WTF???)
int Fibonacci(int Posision)
{
double 1CongCan5Chia2 = ((double)1 + sqrt(5)) / 2;
double 1TruCan5Chia2 = ((double)1 - sqrt(5)) / 2;
double 1ChiaCan5 = (double)1 / sqrt(5);
return (int)(1ChiaCan5 * (pow(1CongCan5Chia2, Position) - pow(1TruCan5Chia2, Position)));
}
Nhắm có khiếu thẩm mỹ thì cứ đeo, sắm máy ảnh, photoshop, các thiết bị vẽ lên pc … rồi chiến thôi.