数据结构——栈与递归(recursion)
/* recursion.c */
/* 递归 */ #include <stdio.h> void interface(void);
/* 斐波那契数列以及阶乘函数声明 */
long long factorial(int n);
void fibonacci(int x, int y, int stop); int main(){
int flag, number; interface();
for(;;){
printf("Command: ");
scanf("%d", &flag);
switch(flag){
case : puts("Bye!"); return ; break;
case :
printf("Enter a number: ");
scanf("%d", &number);
if(number<=)
printf("No negative factorial!\n");
else
printf("%d! = %lld\n", number, factorial(number));
break;
case :
printf("Enter a number: ");
scanf("%d", &number);
if(number<=)
printf("No negative fibonacci!\n");
else
fibonacci(, , number);
break;
}
} return ;
} void interface(void){
puts("+******************+");
puts("+ 0, quit +");
puts("+ 1, factorial +");
puts("+ 2, fibonacci +");
puts("+******************+");
}
/* 函数实现 */
long long factorial(int n){
/* 基线条件以及递归条件 */
if(n==)
return ;
else
return factorial(n-) * n;
}
void fibonacci(int x, int y, int stop){
if(x>stop){
printf("\n");
}else{
printf("%d ", x);
int tmp = y; y = x + y; x = tmp;
fibonacci(x, y, stop);
}
}
数据结构——栈与递归(recursion)的更多相关文章
- 数据结构与算法--递归(recursion)
递归的概念 简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁. 递归调用机制 我列举两个小案例,来帮助大家理解递归 1.打印问题 ...
- C语言数据结构----栈与递归
本节主要说程序中的栈函数栈的关系以及栈和递归算法的关系. 一.函数调用时的栈 1.程序调用时的栈是也就是平时所说的函数栈是数据结构的一种应用,函数调用栈一般是从搞地质向低地址增长的,栈顶为内存的低地址 ...
- 算法与数据结构基础 - 递归(Recursion)
递归基础 递归(Recursion)是常见常用的算法,是DFS.分治法.回溯.二叉树遍历等方法的基础,典型的应用递归的问题有求阶乘.汉诺塔.斐波那契数列等,可视化过程. 应用递归算法一般分三步,一是定 ...
- (js描述的)数据结构[栈结构](2)
(js描述的)数据结构[栈结构](2) 一.什么是栈结构 1.一种受限制的线性结构,这种结构可以基于数组来实现. 2.可以抽象成一个容器,上面的是栈顶,底下的是栈底.所以仅允许对栈顶进行操作, 二.栈 ...
- 数据结构和算法(Golang实现)(14)常见数据结构-栈和队列
栈和队列 一.栈 Stack 和队列 Queue 我们日常生活中,都需要将物品排列,或者安排事情的先后顺序.更通俗地讲,我们买东西时,人太多的情况下,我们要排队,排队也有先后顺序,有些人早了点来,排完 ...
- 【2.0 递归 Recursion 01】
[介绍] Java的一个方法可以调用它自己,Java和所有编程语言都可以支持这种情况,我们把它叫做递归Recursion 递归方法是一种调用自身的方法 那么使用递归方法是是怎么样的呢,让我们看看下面这 ...
- Atitit 循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate).
Atitit 循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate). 1.1. 循环算是最基础的概念, 凡是重复执行一段代码, 都可以称之为循环. ...
- 循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate)的区别
表示“重复”这个含义的词有很多, 比如循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate). 循环算是最基础的概念, 凡是重复执行一段代码, 都可以称 ...
- 栈->栈与递归
文字简述 1.阶乘函数 2.2阶Fiibonacci数列 3.n阶Hanoi塔问题 代码实现 // // Created by lady on 19-4-3. // #include <stdi ...
随机推荐
- 消息队列的使用<一>:介绍、使用场景和JMS概念知识
目录 介绍 消息队列的理解 举个栗子 使用场景 消息队列的模型与概念理解 JMS模型 基本概念: 内容: JMS定义的消息结构: PTP式消息传递 PUB/SUB式消息传递 可靠性机制 事务 消息持久 ...
- promise处理回调地狱
promise 异步调用 异步结果分析 定时任务 ajax 自定义事件函数 多次异步调用依赖分析(promise 应用场景) 多次异步调用结果顺序不确定问题 $.ajax({ url: 'http:l ...
- css3的user-select属性设置文本内容能否被选择
CSS3中提供了个user-select属性来设置或检索是否允许用户选中文本. 语法 user-select:none | text | all | element. 默认值:text. 适用性:除替 ...
- fatal error compiling: tools.jar not found
在Eclipse中使用Maven提供的Install(打包)命令插件的时候报错[Fatal error compiling: tools.jar not found]. 报错的原因 报错的原因从错误信 ...
- C# 爬虫相关的、可供参考的开源项目
1. Abots https://github.com/sjdirect/abot/ 2. DotnetSpider https://github.com/dotnetcore/DotnetSpide ...
- 基于MicroPython:TPYBoard心率监测器
转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇 一.前言 这几年智能穿戴设备大火,尤其是手环类,从A ...
- FIddler+Proxifer 实现PC客户端抓包
Proxifier设置 1.安装Proxifier 下载地址:http://www.hanzify.org/software/13717.html 2.配置代理服务器 A.开启HTTP协议 Proxi ...
- 排序算法Java代码实现(二)—— 冒泡排序
本篇内容: 冒泡排序 冒泡排序 算法思想: 冒泡排序的原理是:从左到右,相邻元素进行比较. 每次比较一轮,就会找到序列中最大的一个或最小的一个.这个数就会从序列的最右边冒出来. 代码实现: /** * ...
- npm 查看全局安装模块
方法一: npm list -g --depth 0 方法二: 输入npm root -g 得到全局node_modules的地址 在任意文件夹输入此地址,便可查看所安模块 https://blog ...
- 奖金高达150万元的NEST即将上线,速来报名
表哥.表姐们快粗来~~~分享一个劲爆消息: 年度奖金总额高达150万元的众测平台(NEST)已于2019年6月10日启动全球报名,6月26号开始首批线上众测,欢迎精英白帽们前来挑战! 更多详情请认真阅 ...