递归函数实例⼤全1
常见的递归函数⼤全
⼀、递归函数
函数func()直接或间接调⽤函数本⾝,则该函数称为递归函数。递归函数不能定义为内联函数。在数学上,关于递归函数的定义如下:对于某⼀函数f(x),其定义域是集合A,那么若对于A集合中的某⼀个值X0,其函数值f(x0)由f(f(x0))决定,那么就称f(x)为递归函数。其实在c 语⾔中,递归就是函数⾃⼰调⽤⾃⼰。
⼆、常见递归实例
递归函数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");
return0;
}
/
/求字符串长度(递归法)
int strLen(char str[])
{
if(str[0]=='\0'){
return0;
}
return1+strLen(str +1);
}
2.字符串的逆序显⽰
代码如下:
int reverse_string(char*str);
int main()
{
/*输⼊字符串然后逆序输出*/
char str[100];
gets(str);
reverse_tring(str);
system("pause");
return0;
}
//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次⽅
代码如下:
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");
return0;
}
//求斐波那契数列(递归法)
int fib(int n)
{
if(n ==1){
return1;
}
if(n ==2){
return1;
}
return fib(n-1)+fib(n-2);
}
三、总结
以上就是今天要讲的内容,本⽂仅仅简单介绍了最常⽤的⽤递归函数处理问题的⼀些算法,加深对递归思想的理解。也希望本⽂对各位⽼铁的学习有所帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论