递归函数实例大全 10个_递归和迭代的区别及关系

递归函数实例大全 10个_递归和迭代的区别及关系常见的递归大全一、递归函数二、常见的递归1.2.三、总结一、递归函数二、常见的递归1.代码如下(示例):importnumpyasnpimportpandasaspdimportmatplotl

递归函数实例大全


一、递归函数

函数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个_递归和迭代的区别及关系分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/76276.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注