一、递归函数
函数func()直接或间接调用函数本身,则该函数称为递归函数。递归函数不能定义为内联函数。在数学上,关于递归函数的定义如下:对于某一函数f(x),其定义域是集合A,那么若对于A集合中的某一个值X0,其函数值f(x0)由f(f(x0))决定,那么就称f(x)为递归函数。其实在c语言中,递归就是函数自己调用自己。
二、常见递归实例
1.求字符串的长度
代码如下:
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996)
int strLen(char str[]);
int main()
{
/*求字符串长度*/
char str[] = "hello";
int n = strLen(str);
printf("%d\n", n);
system("pause");
return 0;
}
//求字符串长度(递归法)
int strLen(char str[])
{
if (str[0] == '\0'){
return 0;
}
return 1 + strLen(str + 1);
}
2.字符串的逆序显示
代码如下:
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996)
int reverse_string(char *str);
int main()
{
/*输入字符串然后逆序输出*/
char str[100];
gets(str);
reverse_tring(str);
system("pause");
return 0;
}
//1.将字符串按反向排列输出(递归法)
void reverse_tring(char *str)
{
if (strlen(str)>0)
{
printf("%c ", str[strlen(str) - 1]);
str[strlen(str) - 1] = '\0';
reverse_tring(str);
}
}
//2.简洁版--将字符串按反向排列输出(递归法)
void reverse_String(char *str)
{
if(*str)
{
reverse_String(str+1);
}
printf("%c",*str);
}
3.计算一个整数的各个位的和
代码如下:
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996)
int DigitSum(int n);
int main()
{
/*计算一个数的各个位的和*/
int n = 3456;
int ret = DigitSum(n);
printf("%d", ret);
system("pause");
}
//实现一个数的各个位之和(递归法)
int DigitSum(int n)
{
if (n <= 9){
return n;
}
return n % 10 + DigitSum(n / 10);
}
4.实现n的k次方
代码如下:
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996)
int exp(int n, int k);
int main()
{
int n = 4,k = 4;
int ret=exp(n, k);
printf("%d\n", ret);
system("pause");
}
//实现n的k次方(递归法)
int exp(int n, int k)
{
if (k <= 1){
return n;
}
return n*exp(n, k - 1);
}
5.计算第n的斐波那契数
代码如下:
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996)
int fib(int n);
int main()
{
int n = 0;
printf("请输入一个数:");
scanf("%d",&n);
int ret=fib(n);
printf("%d\n", ret);
system("pause");
return 0;
}
//求斐波那契数列(递归法)
int fib(int n)
{
if (n == 1){
return 1;
}
if (n == 2){
return 1;
}
return fib(n-1)+ fib(n-2);
}
三、总结
以上就是今天要讲的内容,本文仅仅简单介绍了最常用的用递归函数处理问题的一些算法,加深对递归思想的理解。也希望本文对各位老铁的学习有所帮助。 今天的文章递归函数实例大全 10个_递归和迭代的区别及关系分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/76276.html