【C语言】递归练习题小结
来源:互联网 发布:4k电视盒子 知乎 编辑:程序博客网 时间:2024/05/21 22:57
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
在学习C语言的时候,递归也作为一个重要的角色出现在我们的视野中。
在递归的案例中,斐波那契数是一个很经典的例题,在前面已经为大家总结(C语言实现斐波那契数列点击打开链接)。在此也为大家附上其它的练习:
1、编写一个函数求n的阶乘:
//递归#include<stdio.h>#include<string.h>#include<assert.h>int fa(int n){if (n <= 1){return 1;}else{return n*fa(n - 1);}}int main(){int n = 5;int ret = fa(n);printf("ret = %d\n", ret);system("pause");return 0;}
#include<stdio.h>#include<string.h>//#include<assert.h>void print(int n){if (n > 9){print(n / 10);}printf("%d\n", n % 10);}int main(){print(1234);system("pause");return 0;}
#include<stdio.h>int pow(int n, int k){if (k == 0){return 1;}else if (k == 1){return n;}else{return n*pow(n, k-1 );}}int main(){int n = 2;int k = 3;printf("%d\n", pow(n, k));system("pause");return 0;}
#include<stdio.h>#include<assert.h>int my_strlen_no(char const *p){assert(p != NULL);if (*p == NULL){return 0;}else{return (1 + my_strlen_no(p + 1));}}int main(){char *p = "abcdef";printf("长度是:%d\n", my_strlen_no(p));system("pause");return 0;}
#include<stdio.h>void reserve_string(char *string){if (*string == '\0')printf("%c", *string);else{reserve_string(++string);//输入下一个字符printf("%c", *(--string));}}int main(){char s[] = "abcdef";reserve_string(s);system("pause");return 0;}
#include<stdio.h>int dig(int n){if (n <= 10){return 1;}else{return (n % 10 + dig(n / 10));}}int main(){printf("%d\n", dig(1729));system("pause");return 0;}
阅读全文
1 0
- 【C语言】递归练习题小结
- C语言递归方法小结
- c语言练习题——递归和栈编程训练
- C 语言练习题
- c语言循环练习题
- C语言程序练习题
- c语言练习题
- c语言练习题2
- c语言练习题1
- c语言练习题3
- c语言练习题
- c语言练习题
- c语言练习题
- c语言练习题
- c语言小练习题
- c语言练习题(二)
- C语言练习题 1
- C 语言练习题总结
- 前m大的数 (sort)【HDU】-1280
- Android Studio gradle插件版本和gradle版本对应关系
- Android native和h5混合开发几种常见的hybrid通信方式
- C# 基础类型的快速转换
- 【PythonDjango后台实例 第二章】Python3.6.1+Pyserial+PyMySQL 实现读取串口并存入数据库
- 【C语言】递归练习题小结
- Mac 在命令行获得root权限
- 利用binlog2sql实现闪回
- 多项式的加法与乘法
- SVN目录/文件被删除后如何恢复
- 欢迎使用CSDN-markdown编辑器
- SQLSERVER 查询当前数据的上一条、下一条
- mysql查询 根据年月日的查询
- 玲珑1117RE:从零开始的异世界生活(线段树+思路)