利用函数递归自己编写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,将消耗计算机相当大的时间来计算出结果,这个时候我们可以利用从前往后的循环来得到,具体代码就不在此演示了。