VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • Python
  • PHP
  • Eclipse
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Phần mềm tiện ích
    • Cấu trúc dữ liệu và giải thuật
    • Học lập trình C#
    • Selenium Test

C Cơ Bản

Ngôn ngữ lập trình C là gì? Lịch sử của C Các tính năng của C Cài đặt môi trường lập trình C Chương trình C đầu tiên Flow của chương trình C Biến trong C Các kiểu dữ liệu trong C Ép kiểu trong C Từ khóa trong C Các toán tử trong C Comment trong C Các hằng số trong C printf và scanf trong C Ký tự đặc biệt trong C Xử lý lỗi trong C Tệp Header trong C Toán tử sizeof trong C

Câu Lệnh Điều Khiển C

Mệnh đề if-else Mệnh đề switch Vòng lặp for Vòng lặp while Vòng lặp do-while Lệnh Break Lệnh Continue Lệnh Goto

Con Trỏ

Con trỏ (pointer) trong C Con trỏ trỏ tới con trỏ Con trỏ và mảng trong C Quản lý bộ nhớ trong C

Structure & Union

Structure trong C Mảng của structure trong C Structure lồng nhau trong C Union trong C

C Math

Hàm math cơ bản trong C

C Function

Hàm trong C Hàm do người dùng định nghĩa Các kiểu hàm trong C Đệ quy trong C Call by value Call by reference

C Array

Mảng (array) trong C Mảng 2 chiều trong C Truyền mảng vào hàm
Chuỗi (String) Trong C
File I/O Trong C
Bài Tập C Có Lời Giải

Bài Học Bổ Sung

Enumeration (enum) trong C Preprocessors trong C Bảng ASCII

Đệ quy trong C


Các loại hàm do người dùng định nghĩa trong lập trình C
Call by value – gọi hàm theo giá trị trong C

Đệ quy trong C là quá trình trong đó một phương thức gọi lại chính nó một cách liên tiếp. Một phương thức trong C gọi lại chính nó được gọi là phương thức đệ quy.

Sử dụng đệ quy giúp code chặt chẽ hơn nhưng sẽ khó để hiểu hơn.

Cú pháp:


kieu_tra_ve tenhamdequi() {
   // your code
   tenhamdequi(); /* goi lai chinh no */
}

int main() {
   tenhamdequi();
} 

Nội dung chính

  • Ví dụ về đệ quy trong C

Ví dụ về đệ quy trong C

Dưới đây là các ví dụ về cách sử dụng đệ quy trong C.

Ví dụ 1: vòng lặp vô tận


#include <stdio.h>

void p() {
    printf("hello\n");
    p();
}

int main() {
    p();
    return 0; 
}

Kết quả:

hello
hello
...
Lỗi tràn bộ nhớ...

Ví dụ 2: vòng lặp có hạn


#include <stdio.h>

static int count = 0;
 
void p() {
    count++;
    if (count <= 5) {
        printf("hello %d \n", count);
        p();
    }
}

int main() {
    p();
    return 0; 
}

Kết quả:

hello 1
hello 2
hello 3
hello 4
hello 5

Ví dụ 3: tính giai thừa


#include <stdio.h>

int factorial(int n) {
    if (n == 1)
        return 1;
    else
        return (n * factorial(n - 1));
}
 
int main() {
    printf("Giai thua cua 5 la: %d", factorial(5));
    return 0;
}

Kết quả:

Giai thừa của 5 là: 120

Chương trình trên hoạt động như sau:


factorial(5) 
   factorial(4) 
      factorial(3) 
         factorial(2) 
            factorial(1) 
               return 1 
            return 2*1 = 2 
         return 3*2 = 6 
      return 4*6 = 24 
   return 5*24 = 120

Ví dụ 4: dẫy số Fibonacci


#include <stdio.h>

static int n1 = 0, n2 = 1, n3 = 0;

void printFibo(int count) {
    if (count > 0) {
        n3 = n1 + n2;
        n1 = n2;
        n2 = n3;
        printf(" %d", n3);
        printFibo(count - 1);
    }
}

int main() {
    int count = 15;
    printf("%d %d", n1, n2); // in 0 và 1
    printFibo(count - 2); // n-2 vì 2 so 0 và 1 da duoc in ra

    return 0;
}

Kết quả:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

Các loại hàm do người dùng định nghĩa trong lập trình C
Call by value – gọi hàm theo giá trị trong C

Recent Updates

Dãy số Fibonacci trong C#Bài tập C# có lời giảiToán tử dấu 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8HttpClient trong Angular 7Service trong Angular7Directive trong Angular 7Component trong Angular 7Hướng dẫn lập trình Angular 7 với trình soạn thảo Visual Studio CodeCài đặt Angular 7Các lệnh Angular CLITổng hợp các thẻ mới trong HTML5

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn

Danh sách bài học

Học java
Học servlet
Học jsp
Học Hibernate
Học Struts2
Học Spring
Học SQL

Câu hỏi phỏng vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

About VietTuts.Vn

Hệ thống bài học trên VietTuts.Vn bao gồm các bài lý thuyết và thực hành về các công nghệ java và công nghệ web. Các bài lý thuyết trên hệ thống VietTuts.Vn được tham khảo và tổng hợp từ các trang http://javatpoint.com, http://www.tutorialspoint.com, http://docs.oracle.com/en …

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | VietTuts.Vn team | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml