递归
来源:互联网 发布:ps修复软件下载 编辑:程序博客网 时间:2024/06/07 17:19
1.编写一个函数实现n^k,使用递归实现
2. 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
3. 编写一个函数reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中
的字符串操作函数。
4.不创建临时变量求字符串长度。
5.递归和非递归实现求n的阶乘
6.递归和非递归实现求第n个斐波那契数。
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>//1.编写一个函数实现n^k,使用递归实现//int power(int n,int k)//{// if (k == 0)// {// return 1;// }// else// {// return n*power(n, k - 1);// }//}////void main()//{// int n = 0;// int k = 0;// scanf("%d%d", &n,&k);// printf("%d^%d=%d\n",n,k,power(n,k));//}//2. 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和//例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19//int DigitSum(int n)//{// if (n > 9)// {// printf("%d+", n % 10);// return n % 10 + DigitSum(n / 10);// }// else// {// printf("%d=",n);// return n;// }////}//void main()//{// int n = 1729;// scanf("%d", &n);// printf("%d",DigitSum(n));//}//3. 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。//要求:不能使用C函数库中的字符串操作函数。//void reverse_string(char * string)//{// if (*string == '\0')// {// printf("%c",*string);// }// else// {// reverse_string(++string);// printf("%c", *(--string));// }//}////void main()//{// char *p = "adcd";// reverse_string(p);//}//4.不创建临时变量求字符串长度。//int len(char* p)//{// if (*p == '\0')// {// return 0;// }// else// {// return len(p + 1) + 1;// }//}////void main()//{// int *p = "abcd";// printf("%d", len(p));//}//5.递归和非递归实现求n的阶乘//递归//int Factorial(int n)//{// if (n > 0)// {// return n*Factorial(n - 1);// }// else// {// return 1;// }//}////void main()//{// int n = 0;// scanf("%d", &n);// printf("%d!=%d\n",n,Factorial(n));//}//非递归//int F_Factorial(int n)//{// int sum = 1;// while (n > 1)// {// sum = sum*n;// --n;// }// return sum;//}//void main()//{// int n = 0;// scanf("%d", &n);// printf("%d", F_Factorial(n));//}//6.递归和非递归实现求第n个斐波那契数。#include<assert.h>//递归int Fibonacci(int n){ assert(n); if (n < 3) { return 1; } else { return Fibonacci(n - 1) + Fibonacci(n - 2); }}//非递归void F_Fibonacci(int n){ int k1 = 1; int k2 = 1; int k3 = 0; assert(n); if (n > 2) { n = n - 2; while (n > 0) { k3 = k1 + k2; k1 = k2; k2 = k3; --n; } printf("%d\n", k3); } else { printf("1\n"); }}void main(){ int n = 0; scanf("%d", &n); printf("%d\n", Fibonacci(n)); F_Fibonacci(n);}
阅读全文
0 0
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- [Leetcode] 439. Ternary Expression Parser 解题报告
- Java
- Xlistview
- java代码性能调优
- laravel apiato框架使用
- 递归
- Advanced Programming in UNIX Environment Episode 13
- listView多条目
- Laravel 获取请求类型
- java.util.concurrent.locks.AbstractOwnableSynchronizer
- 子查询
- IDEA构建一个mybatis项目
- SpringBoot
- 通过判断浏览器的userAgent,用正则来判断手机是否是ios(苹果)和Android(安卓)客户端