- C语言数据结构教程
- C语言数据结构 - 首页
- C语言数据结构 - 概述
- C语言数据结构 - 环境搭建
- C语言数据结构 - 算法
- C语言数据结构 - 概念
- C语言数据结构 - 数组
- C语言数据结构 - 链表
- C语言数据结构 - 双向链表
- C语言数据结构 - 循环链表
- C语言数据结构 - 栈
- C语言数据结构 - 表达式解析
- C语言数据结构 - 队列
- C语言数据结构 - 优先队列
- C语言数据结构 - 树
- C语言数据结构 - 哈希表
- C语言数据结构 - 堆
- C语言数据结构 - 图
- C语言数据结构 - 搜索技术
- C语言数据结构 - 排序技术
- C语言数据结构 - 递归
- C语言数据结构 - 有用资源
- C语言数据结构 - 快速指南
- C语言数据结构 - 有用资源
- C语言数据结构 - 讨论
C语言数据结构 - 递归
概述
递归指的是编程语言中一种函数调用自身的技术。调用自身的函数称为递归方法。
特点
一个递归函数必须具备以下两个特点。
基本情况(Base Case)
一组规则,通过减少情况来导致基本情况。
递归阶乘
阶乘是递归的经典示例之一。阶乘是一个非负数,满足以下条件。
0! = 1
1! = 1
n! = 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); } }
递归斐波那契数列
斐波那契数列是递归的另一个经典示例。斐波那契数列是一系列整数,满足以下条件。
F0 = 0
F1 = 1
Fn = Fn-1 + Fn-2
斐波那契用“F”表示。规则1和规则2是基本情况,规则3是斐波那契规则。
例如,F5 = 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
广告