递归
2018-03-08 14:12
246 查看
1。
递归和非递归分别实现求第n个斐波那契数。
2。
递归和非递归分别实现求n的阶乘 。
3。
编写一个函数实现n^k,使用递归实现 。
4。
递归和非递归分别实现strlen 。
5。
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19。
6。
编写一个函数reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中 的字符串操作函数。
7。
递归方式实现打印一个整数的每一位 。
宏(题)
http://blog.csdn.net/romantic_c/article/details/79451028
位&翻转_1(题)
http://blog.csdn.net/romantic_c/article/details/79455583
位&翻转_2(题)
http://blog.csdn.net/romantic_c/article/details/79476849
递归和非递归分别实现求第n个斐波那契数。
#include <stdio.h> #include <assert.h> #pragma warning(disable:4996) int Fib_1(int size) { assert(size); if(size<=2) { return 1; } return Fib_1(size-1)+Fib_1(size-2); } int Fib_2( int size) { int i = 2; int data = 1; int num = 1; int tmp = 1; assert(size); if(size <= 2) { return 1; } for(i=2;i<size;i++) { data=tmp+num; tmp=num; num=data; } return data; } int main() { int size,data; scanf("%d",&size); data = Fib_2(size); printf("%d ",data); return 0; }
2。
递归和非递归分别实现求n的阶乘 。
#include <stdio.h> #pragma warning(disable:4996) unsigned int Fac_1(unsigned int size) { if(size<=1) { return 1; } return Fac_1(size-1) * size; } unsigned int Fac_2( unsigned int size) { int i = 2; int data = 1; if(size <= 1) { return 1; } for(i=2;i<=size;i++) { data*=i; } return data; } int main() { unsigned int size,data; scanf("%d",&size); data = Fac_2(size); printf("%d ",data); return 0; }
3。
编写一个函数实现n^k,使用递归实现 。
#include <stdio.h> #pragma warning(disable:4996) long long find_Power(unsigned int num,unsigned int power) { if(num<=1 || power == 0) { return 1; } return find_Power(num,power-1)*num; } int main() { unsigned int num; unsigned int power; long long data; scanf("%d%d",&num,&power); data = find_Power(num,power); printf("%lld\n",data); return 0; }
4。
递归和非递归分别实现strlen 。
#include <stdio.h> #pragma warning(disable:4996) int my_strlen(char *str) { if('\0'== *str) { return 0; } return 1+ my_strlen(str+1); } int my_strlen_1(char *str) { int count = 0; while(*str++) { count++; } return count; } int main() { char str[]="abcde1234"; //char str[]="";//0 int data; data = my_strlen_1(str); printf("%d\n",data); return 0; }
5。
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19。
#include <stdio.h> #pragma warning(disable:4996) int DigitSum(int data) { if(data<=9) { return data; } return DigitSum(data/10)+data%10; } int main() { int data = 1729; int sum; sum = DigitSum(1729); printf("%d\n",sum); return 0; }
6。
编写一个函数reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中 的字符串操作函数。
#include <stdio.h> #pragma warning(disable:4996) void Reverse_str(char *str) { if('\0'== *str) { return ; } Reverse_str(str+1); printf("%c ",*str); } int main() { char str[]="abcd1234"; Reverse_str(str); return 0; }
7。
递归方式实现打印一个整数的每一位 。
#include <stdio.h> #pragma warning(disable:4996) void my_printf(int num) { if(num<9) { printf("%d ",num); return num; } my_printf(num/10); printf("%d ",num%10); } int main() { int num; scanf("%d",&num); my_printf(num); return 0; }
宏(题)
http://blog.csdn.net/romantic_c/article/details/79451028
位&翻转_1(题)
http://blog.csdn.net/romantic_c/article/details/79455583
位&翻转_2(题)
http://blog.csdn.net/romantic_c/article/details/79476849
相关文章推荐
- 普及练习场 递推与递归二分 台阶问题
- 递归:: 八皇后问题
- poj 1664 递归
- 台阶问题递归优化
- HD1312 Red and Black【递归】
- 递归解析任意层的json
- 蓝桥杯篇1 - 递归
- scala 递归读取文件夹下所有的指定后缀的文件
- PHP递归创建目录函数
- BST(或者普通树)的中序遍历非递归版本
- 函数递归 迭代
- 尾递归
- 盒子分形问题(递归实现)
- 递归 放苹果问题和整数划分问题
- C++奥赛一本通刷题记录(递归)
- Jsp+Ext2.0用递归实现任意指定节点ID的无限级Tree的生成
- 递归删除一个文件夹中的所有内容
- 递归与非递归实现二叉树的遍历
- java二叉树非递归之前序遍历
- 递归实现链表反转