算法竞赛入门经典: 第四章 函数与递归 4.5递归
2015-08-11 11:00
323 查看
/* 递归: 含义:直接用到自己或间接用到自己 优点:简洁+严密 注意:写递归终止条件 */ /* 关键: 1调用栈中,#0 #1都是从最内层被调函数到外层主调函数的过程 2调用栈:描述函数调用关系,组成:栈帧,栈帧:表示未运行完函数 3递归过程:建立新栈帧,传参,修改当前代码行,删栈帧,修改当前代码行。同一时刻栈帧多个,当前代码行一个 4凡是和递归有关,全给我用long。设计递归是为了给下级安排工作 5可执行文件中:正文段:存指令,数据段:存全局变量,BSS段:存未赋值全局变量所需空间 6堆栈段:调用栈所在的段,每次递归调用需要往调用栈里增加栈帧,不久越界。windows:栈大小在可执行程序中,linux:unlimit -a:显示栈大小 7局部变量放在栈里,栈溢出原因:1局部变量大,2递归调用多 */ #include <stdio.h> #include <stdlib.h> long recursion(int n) { return n == 0 ? 1 : recursion(n-1)*n;//返回的值留给下一次递归使用 } int main(int argc,char* argv[]) { int n; scanf("%d",&n); printf("%ld\n",recursion(n)); system("pause"); return 0; }
相关文章推荐
- SDUTOJ 贪心 -商人小鑫
- aliases配置文件
- MongoDB数据类型
- ruby 编辑中文注释 报错
- HDU 5353
- 字符串运用—密码截取
- POJ2739---Sum of Consecutive Prime Numbers(尺取法)
- 为Android Studio设置HTTP代理
- 高性能JavaScript 重排与重绘(2)
- 先成为锦,然后才能添花
- 问题:CentOS 7.0部署Docker报错
- 源代码解读Cas实现单点登出(single sign out)功能实现原理
- twisted05 简单的http服务器
- RabbitMq的整理 exchange、route、queue关系
- POJ 1060 Modular multiplication of polynomials 逻辑运算
- jsp安全性问题
- Tomcat安装配置
- 22-IO流-27-IO流(流的操作基本规律)
- 最好用的屏幕录像软件BB FlashBack v5.8.0 Pro
- Qt 5.3 下OpenCV 2.4.11 开发(11)CamShift 目标跟踪