递归函数实例大全 1



一、递归函数

函数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);
}


三、总结

以上就是今天要讲的内容,本文仅仅简单介绍了最常用的用递归函数处理问题的一些算法,加深对递归思想的理解。也希望本文对各位老铁的学习有所帮助。
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页