递归
来源:互联网 发布:k60单片机特点 编辑:程序博客网 时间:2024/06/08 06:06
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<assert.h>
#include<string.h>
//编写一个函数实现n^k,使用递归实现
int Kfactorial(int n)
{
if (n <= 1)
return 1;
else
return n*Kfactorial(n - 1);
}
int main()
{
printf("%d\n", Kfactorial(7));
return 0;
}
{
if (n <= 1)
return 1;
else
return n*Kfactorial(n - 1);
}
int main()
{
printf("%d\n", Kfactorial(7));
return 0;
}
//2. 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字
//之和,例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19
//之和,例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19
int DigitSum(int n)
{
if (n > 9)
{
DigitSum(n / 10);
}
int sum = n % 10;
sum += sum ;
return sum;
}
{
if (n > 9)
{
DigitSum(n / 10);
}
int sum = n % 10;
sum += sum ;
return sum;
}
int main()
{
printf("%d\n", DigitSum(1729));
return 0;
}
{
printf("%d\n", DigitSum(1729));
return 0;
}
//3. 编写一个函数reverse_string(char * string)(递归实现)
//实现:将参数字符串中的字符反向排列。
//要求:不能使用C函数库中
//的字符串操作函数。
//实现:将参数字符串中的字符反向排列。
//要求:不能使用C函数库中
//的字符串操作函数。
void reverse_string(char * string)
{
if (*string == '\0')
{
printf("%c", *string);
}
else
{
++string;
reverse_string(string);
--string;
printf("%c", *(string));
}
}
int main()
{
char s[] = "abcdef";
reverse_string(s);
printf("\n");
return 0;
}
{
if (*string == '\0')
{
printf("%c", *string);
}
else
{
++string;
reverse_string(string);
--string;
printf("%c", *(string));
}
}
int main()
{
char s[] = "abcdef";
reverse_string(s);
printf("\n");
return 0;
}
//4.不创建临时变量求字符串长度。
int my_strlen(const char* str)
{
if (*str)
{
return 1 + my_strlen(str + 1);
}
else
return 0;
{
if (*str)
{
return 1 + my_strlen(str + 1);
}
else
return 0;
}
int main()
{
char s[] = "abcdefg";
int len = 0;
len = my_strlen(s);
printf("%d\n", len);
return 0;
}
int main()
{
char s[] = "abcdefg";
int len = 0;
len = my_strlen(s);
printf("%d\n", len);
return 0;
}
//5.递归和非递归实现求n的阶乘
int fac1(int n) //非递归
{
if (n == 0 || n == 1)
{
return 1;
}
else
{
int sum = 1;
for (int k = n; k > 1; --k)
{
sum *= k;
}
return sum;
}
}
{
if (n == 0 || n == 1)
{
return 1;
}
else
{
int sum = 1;
for (int k = n; k > 1; --k)
{
sum *= k;
}
return sum;
}
}
int fac2(int n) //递归
{
if (n <= 1)
return 1;
else
return n*fac2(n - 1);
}
int main()
{
int num = 4;
//printf("%d\n", fac1(num));
printf("%d\n", fac2(num));
return 0;
}
{
if (n <= 1)
return 1;
else
return n*fac2(n - 1);
}
int main()
{
int num = 4;
//printf("%d\n", fac1(num));
printf("%d\n", fac2(num));
return 0;
}
//6.递归和非递归实现求第n个斐波那契数。
int Fabe1(int n) //非递归
{
int i = 0;
int j = 1;
int sum = 0;
for (int k = 2; k < n + 1; k++)
{
sum = i + j;
i = j;
j = sum;
}
return sum;
}
{
int i = 0;
int j = 1;
int sum = 0;
for (int k = 2; k < n + 1; k++)
{
sum = i + j;
i = j;
j = sum;
}
return sum;
}
int Fabe2(int n) //递归
{
if (n <= 2)
return 1;
else
return Fabe2(n - 1) + Fabe2(n - 2);
{
if (n <= 2)
return 1;
else
return Fabe2(n - 1) + Fabe2(n - 2);
}
int main()
{
int m = 8;
//printf("%d\n", Fabe1(m));
printf("%d\n", Fabe2(m));
return 0;
}
int main()
{
int m = 8;
//printf("%d\n", Fabe1(m));
printf("%d\n", Fabe2(m));
return 0;
}
阅读全文
0 0
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- CMAKE默认编译链接选项
- 内存泄漏分析及预防(3)
- 停课总结(六)
- 四大域对象
- nvivo11 官方免费版下载附安装教程
- 递归
- vxworks RS422串口接收大数据格式包丢包问题
- R|ggplot2 画中国省会地图
- 如何理解Java面向对象的多态
- 遇到的selenium下拉框无法操作解决方法-键盘操作事件
- GitHub Pages + Hexo构建博客及问题
- 当make menuconfig时出现:mconf.c:(.text+0x744): undefined reference to `stdscr'
- makefile中的伪目标,强制目标和双冒号规则
- 深拷贝和浅拷贝的区别