[C语言]利用函数递归自己编写strlen,n的阶乘,以及求第N个斐波那契数列值

利用函数递归自己编写strlen

函数递归思想就是一个函数在调用的时候运用自身,即可以完成一次递归,但是为了防止无限嵌套,我们应该加上一个终止条件,这个就是递归最本质的思想

如利用函数递归来写一个strlen函数,strlen函数计算字符长度主要是借助字符串的结束标识为\0来判断字符串是否终止,利用这个思想,我们在每次递归的时候都让我们返回值增加1,在最后一次返回0那就可以判断有多少个字符。代码如下

#include <stdio.h>
int my_strlen(char* x)
{
	if (*x != '\0')
	{
		x++;
		return(1+my_strlen(x));
	}
	return 0;
}
int main()
{
	char a[] = "AUT";
	printf("%d", my_strlen(a));
}

编写N的阶乘

利用递归来写一个N的阶乘也是如此,代码如下

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//利用函数递归求n的阶乘

int function(int x)
{
	if (x != 1)
	{
		return(x*function(x - 1));
	}
	return 1;
}
int main()
{
	int a = 0;
	scanf("%d", &a);
	printf("%d",function(a));
	return 0;C
}

递归的思想就是大事化小,每一次计算的时候都嵌套一次自己上一次得到的数值

求第N个斐波那契数列值

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//求第 n个斐波那契数列
int function(a)
{
	if (a == 1 || a == 2)
		return 1;
	else
		return function(a - 1) + function(a - 2);
}
int main()
{
	int a = 0;
	scanf("%d", &a);
	printf("%d", function(a));
}

利用函数递归的思想可以非常简化我们的代码,但是带来的一个弊端就是计算的复杂度上升,如这个斐波那契数列的计算,如果输入的数字为50,将消耗计算机相当大的时间来计算出结果,这个时候我们可以利用从前往后的循环来得到,具体代码就不在此演示了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值