文字简述

1.阶乘函数

2.2阶Fiibonacci数列

3.n阶Hanoi塔问题

代码实现

 //
// Created by lady on 19-4-3.
// #include <stdio.h>
#include <stdlib.h>
#include <string.h> static int Fact(int n)
{
if(n==){
return ;
}else{
return n*Fact(n-);
}
} static int Fibonacci(int n)
{
if(n == ){
return ;
}else if(n == ){
return ;
}else{
return (Fibonacci(n-) + Fibonacci(n-));
}
} // 将塔座x上按直径由小到大且自上而下编号为1至n的n个圆盘按规则搬到塔座z上,y可作辅助塔座
// 搬动操作move(x, n, z)可定义为(c是初值为0的全局变量,对搬动计数)
// printf("%d. Move disk %d from %c to %c", ++c, n, x, z);
int C = ;
static int move(char x, int n, char z)
{
printf("step %d: move disk %d from %c to %c\n", ++C, n, x, z);
return ;
}
static int hanoi(int n, char x, char y, char z)
{
if(n == ){
move(x, n, z);
}else{
hanoi(n-, x, z, y);
move(x, n, z);
hanoi(n-, y, x, z);
}
return ;
}
int main(int argc, char *argv[])
{
printf("5! = %d\n", Fact());
printf("Fibonacci(5) = %d\n", Fibonacci());
hanoi(, 'a', 'b', 'c');
return ;
}

栈和递归

代码运行

/home/lady/CLionProjects/untitled/cmake-build-debug/untitled
5! = 120
Fibonacci(5) = 5
step 1: move disk 1 from a to c
step 2: move disk 2 from a to b
step 3: move disk 1 from c to b
step 4: move disk 3 from a to c
step 5: move disk 1 from b to a
step 6: move disk 2 from b to c
step 7: move disk 1 from a to c Process finished with exit code 0

栈->栈与递归的更多相关文章

  1. 二叉树中序遍历,先序遍历,后序遍历(递归栈,非递归栈,Morris Traversal)

    例题 中序遍历94. Binary Tree Inorder Traversal 先序遍历144. Binary Tree Preorder Traversal 后序遍历145. Binary Tre ...

  2. PQJ 1686(栈栈栈)

    PQJ  1686(栈栈栈) 用栈解决问题 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I6 ...

  3. Python全栈之路----递归

    alex博客中递归的博文     我之前确实没讲明白递归这个东西 递归就是在函数的运行过程中调用自己. 但递归不断调用自己是有限度的,默认限度为1000.函数不断被压进栈,当超过递归限度时会造成栈溢出 ...

  4. 数据结构--汉诺塔--借助栈实现非递归---Java

    /*汉诺塔非递归实现--利用栈 * 1.创建一个栈,栈中每个元素包含的信息:盘子编号,3个塔座的变量 * 2.先进栈,在利用循环判断是否栈空, * 3.非空情况下,出栈,检查是否只有一个盘子--直接移 ...

  5. 栈(stack)、递归(八皇后问题)、排序算法分类,时间和空间复杂度简介

    一.栈的介绍: 1)栈的英文为(stack)2)栈是一个先入后出(FILO-First In Last Out)的有序列表.3)栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的 ...

  6. Python全栈开发:递归实例

    #!/usr/bin/env python # -*- coding;utf-8 -*- """ 递归不能无限,python会限制递归深度,递归主要用于费布拉切数列 &q ...

  7. java虚拟机 jvm 出入java栈 栈空间内存分配

    java栈空间是一块线程私有的内存空间,java堆和程序数据密切相关,那么java栈就是和线程执行密切相关.线程最基本的执行行为就是函数的调用.每次函数调用其实是通过java栈传递数据的. 数据结构中 ...

  8. Java数据结构与算法(3) - ch04栈(栈和转置)

    栈的基本特性是后进先出,最简单的用途是用于转置,还有其他诸如括号匹配,中序表达式(A+B*(C-D/(E+F)) --> ABCDEF+/-*+)和后续表达式(345+*612+/- --> ...

  9. 栈->栈的应用

    e.g.1 数制转换 十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理. 假设编写一个程序:对于输入的任意一个非负十进制整数,打印输出与其等值的八 ...

随机推荐

  1. Python Day2 (二)

    字典的操作: 见连接: http://www.cnblogs.com/alex3714/articles/5717620.html 第二天作业,修改haproxy配置文件. 程序练习 程序1: 实现简 ...

  2. LNMP一键包安装后解决MySQL无法远程连接问题

    MySQL/MariaDB无法远程连接,如何开启? 1,没有给root对应的权限 -- @'192.168.1.123'可以替换为@‘%’就可任意ip访问 mysql> GRANT ALL PR ...

  3. OpenCV3编程入门-读书笔记3-滤波

    一.领域滤波(卷积) 邻域算子值利用给定像素周围像素的值决定此像素的最终输出.如图左边图像与中间图像卷积得到右边图像.目标图像中绿色的像素由原图像中蓝色标记的像素计算得到. 通用线性邻域滤波是一种常用 ...

  4. python学习第23天

    isinstance和issubclass 反射: 反射对象中的内容 反射类中的内容 反射本文件中的内容 反射模块中的内容

  5. 从GitHub下载demo时遇到的依赖问题

    从GitHub上使用download zip下载时,经常遇到一些依赖工程没有一起下载,如果额外手动下载,配置起来也相当费事,其实,标准的方法是使用以下命令下载这样的demo. git clone -- ...

  6. RC terms.

    ETA: estimated time of arrival DEA: 1-Leg: 2-Leg: FCC: L10N: LocalizatioN i18N: InternationalizatioN ...

  7. Web.Config加密与解密

    可以使用受保护配置来加密 Web 应用程序配置文件(如 Web.config 文件)中的敏感信息(包括用户名和密码.数据库连接字符串和加密密钥).对配置信息进行加密后,即使攻击者获取了对配置文件的访问 ...

  8. Codeforces 700E. Cool Slogans 字符串,SAM,线段树合并,动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF700E.html 题解 首先建个SAM. 一个结论:对于parent树上任意一个点x,以及它所代表的子树内任 ...

  9. linux 添加ssh和开启ssh服务apt管理的ubuntu

    是在ubuntu下出现的需求 现笔记记录 apt-get  update 更新源命令 apt-get  install  openssh-server 安装ssh服务 容易出现无法定位软件包.出现此问 ...

  10. ulimit -c unlimited的使用(转载)

    ulimit -c unlimited ulimint -a 用来显示当前的各种用户进程限制Linux对于每个用户,系统限制其最大进程数,为提高性能,可以根据设备资源情况,设置个Linux用户的最大进 ...