C 递归经典实例

1

菲波那切数列:求第N个数列的值

#include <stdio.h>
long long Fib(int  n){
    return (n == 1 || n == 2) ? 1 : Fib(n - 1) + Fib(n - 2);
}

int main(){
	 printf("%ld\n",Fib(40));
}
C:\MinGW\project>gcc -std=c99 main.c

C:\MinGW\project>a.exe
102334155

递归求出年龄:

每一个人比前面一个人大2岁,最前面那个人是10岁,求第n个人的年龄

#include <stdio.h>
int recurse(int n){
    int i;
	if(n==1) i=10;
	else     i=recurse(n-1)+2;
return i;
}

int main(){
	printf("age = %d",recurse(20));
}
C:\MinGW\project>gcc str.c
C:\MinGW\project>a.exe
age = 48

汉诺塔问题

#include <stdio.h>
long num=0;
void hanoi(int n,char A,char B,char C){//理解为:有n个盘子在A上,通过B,移到C
	if(n==1)
		printf("第%ld步:\t%c -> %c\n",++num,A,C);
	else{
		hanoi(n-1,A,C,B); 
		printf("第%ld步:\t%c -> %c\n",++num,A,C); 
		hanoi(n-1,B,A,C);
	}
}

int main(){
	int n=0;
	printf("请输入盘子的个数\n");
	scanf("%d",&n);
	printf("盘子的移动方向如下\n");
    hanoi(n,‘A‘,‘B‘,‘C‘); 
}
C:\MinGW\project>gcc  main.c
C:\MinGW\project>a.exe
请输入盘子的个数
5
盘子的移动方向如下
第1步:  A -> C
第2步:  A -> B
第3步:  C -> B
第4步:  A -> C
第5步:  B -> A
第6步:  B -> C
第7步:  A -> C
第8步:  A -> B
第9步:  C -> B
第10步: C -> A
第11步: B -> A
第12步: C -> B
第13步: A -> C
第14步: A -> B
第15步: C -> B
第16步: A -> C
第17步: B -> A
第18步: B -> C
第19步: A -> C
第20步: B -> A
第21步: C -> B
第22步: C -> A
第23步: B -> A
第24步: B -> C
第25步: A -> C
第26步: A -> B
第27步: C -> B
第28步: A -> C
第29步: B -> A
第30步: B -> C
第31步: A -> C
时间: 2025-01-10 17:02:06

C 递归经典实例的相关文章

经典实例

综合实例 水仙花数(Narcissistic number): 也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153). using System; using System.Collections.Generic; using System.

iptables经典实例

Q:一局域网192.168.1.0/24,有web和ftp服务器192.168.1.10.192.168.1.11,网关linux,内网eth0,IP为192.168.1.1,外网eth1,IP为a.b.c.d,怎样作NAT能使内外网都能访问公司的服务器? A:# web# 用DNAT作端口映射iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.1.10# 用SNAT作源地址转换(关键),

php之复制文件——php经典实例

php之复制文件--php经典实例 <?php function dirCopy($dir1,$dir2){ //判断是否目录存在 if(!file_exists($dir2) || !is_dir($dir2)){ //不是文件或目录 就创建 mkdir($dir2); } //打开 $dd=opendir($dir1); //遍历 while(false !== ($f=readdir($dd))){ //过滤 if($f=="." || $f==".."

JavaScript 实现的checkbox经典实例分享

JavaScript 实现的checkbox经典实例分享 本文主要给大家分享的是JavaScript实现checkbox多项选择的经典代码,非常的简单实用,有需要的小伙伴可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 5

《C#并发编程经典实例》笔记

1.前言 2.开宗明义 3.开发原则和要点 (1)并发编程概述 (2)异步编程基础 (3)并行开发的基础 (4)测试技巧 (5)集合 (6)函数式OOP (7)同步 1.前言 最近趁着项目的一段平稳期研读了不少书籍,其中<C#并发编程经典实例>给我的印象还是比较深刻的.当然,这可能是由于近段日子看的书大多嘴炮大于实际,如<Head First设计模式><Cracking the coding interview>等,所以陡然见到一本打着"实例"旗号的

《PHP经典实例(第2版)》

PHP经典实例(第2版)能够为您节省宝贵的Web开发时间.有了这些针对真实问题的解决方案放在手边,大多数编程难题都会迎刃而解.<PHP经典实例(第2版)>将PHP的特性与经典实例丛书的独特形式组合到一起,足以帮您成功地构建跨浏览器的Web应用程序.在这个修订版中,您可以更加方便地找到各种编程问题的解决方案,<PHP经典实例(第2版)>中内容涵盖了:表单处理:Session管理:数据库交互:使用Web服务. 从初学者常见的问题到高级Web编程技术,这本包含了丰富的.具有实际应用价值的

c#初学-多线程中lock用法的经典实例

本文转载自:http://www.cnblogs.com/promise-7/articles/2354077.html 一.Lock定义     lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断.它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待.这是通过在代码块运行期间为给定对象获取互斥锁来实现的. 在多线程中,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数.这可能带来的问

递归转非递归(实例)

递归调用示例算法1.10  求取数组元素的最大值(递归算法)    procedure MAX1(i)    // 查找数组A中最大值元素,并返回该元素的最大下标.//        global integer n,A(1:n),j,k        integer i        if i<n then j←MAX1(i+1)  //递归调用//               if A(i) > A(j) then k←i                   else k←j       

php简单文件管理器——php经典实例

<html> <head> <title>文件管理</title> <meta charset='utf-8' /> </head> <body> <?php //定义要查看的目录 $dir="/"; //先判断$_GET['a']是否已经传值 防止NOTICE错误 if(isset($_GET['a'])){ //选择判断要执行的操作 switch($_GET['a']){ case 'crea