 
- DSA 使用 C 教程
- 使用 C 的 DSA - 主页
- 使用 C 语言的 DSA - 概述
- 使用 C 语言的 DSA - 环境
- 使用 C 算法的 DSA
- 使用 C 的 DSA - 概念
- 使用 C 数组的 DSA
- 使用 C 链表的 DSA
- 使用 C 的 DSA - 双向链表
- 使用 C 的 DSA - 循环链表
- 使用 C 的 DSA - 堆栈内存溢出
- 使用 C 的 DSA - 解析表达式
- 使用 C 队列的 DSA
- 使用 C 的 DSA - 优先级队列
- 使用 C 树的 DSA
- 使用 C 哈希表的 DSA
- 使用 C 堆的 DSA
- 使用 C - Graph 的 DSA
- 使用 C 搜索技术的 DSA
- 使用 C 排序技术的 DSA
- 使用 C 的 DSA - 递归
- 使用 C 语言的 DSA 有用资源
- 使用 C 的 DSA - 快速指南
- 使用 C 的 DSA - 有用资源
- 使用 C 的 DSA - 讨论
使用 C 的 DSA - 递归
概述
递归是指编程语言中函数调用自身的技术。调用自身的函数称为递归方法。
特征
递归函数必须具有以下两个特征。
- 基本案例 
- 减少案例后得出基本案例的规则集。 
递归阶乘
阶乘是递归的经典示例之一。阶乘是满足以下条件的非负数。
- 0!= 1 
- 1!= 1 
- 嗯!= n * n-1! 
阶乘用“!”表示。这里规则 1 和规则 2 是基本情况,规则 3 是阶乘规则。
举个例子,3!= 3 x 2 x 1 = 6
int factorial(int n){
   //base case
   if(n == 0){
      return 1;
   } else {
      return n * factorial(n-1);
   }
}
 
递归斐波那契数列
斐波那契数列是递归的另一个经典例子。斐波那契数列满足以下条件的一系列整数。
- F 0 = 0 
- F 1 = 1 
- F n = F n-1 + F n-2 
斐波那契数用“F”表示。这里规则 1 和规则 2 是基本情况,规则 3 是斐波那契规则。
例如,F 5 = 0 1 1 2 3
例子
#include <stdio.h>
int factorial(int n){
   //base case
   if(n == 0){
      return 1;
   } else {
      return n * factorial(n-1);
   }
}
int fibbonacci(int n){
   if(n ==0){
      return 0;
   }
   else if(n==1){
      return 1;
   } else {
      return (fibbonacci(n-1) + fibbonacci(n-2));
   }
}
main(){
   int n = 5;
   int i;
   printf("Factorial of %d: %d\n" , n , factorial(n));
   printf("Fibbonacci of %d: " , n);
   for(i=0;i<n;i++){
      printf("%d ",fibbonacci(i));            
   }
}
输出
如果我们编译并运行上面的程序,那么它将产生以下输出 -
Factorial of 5: 120 Fibbonacci of 5: 0 1 1 2 3