1.
int my_strlen(char* str)
{
if (*str != '\0')
{
return 1 + my_strlen(str + 1);
//利用递归求字符串长度:递归一次就是多一个字符这样就可以求出字符串的长度了
}
else
return 0;
}
int main()
{
//编写一个函数,不许创建临时变量,求字符串长度
char arr[] = "hello";
printf("%d\n", my_strlen(arr));
return 0;
}
2.
int Fac(int n)
{
if (n <= 1)
{
return 1;
//当n为一或者小于1时直接返回1就可以了
}
else
{
return n * Fac(n - 1);
//当n比1打是,将进入函数的递归,就跟数学公式一样n*(n-1)
}
}
int main()
{
//用递归的方法,求n的阶乘。
int n = 0;
scanf("%d", &n);
int ret=Fac(n);
printf("%d", ret);
return 0;
}
3
方法一:
int Fib(int n)
{
if (n <= 2)
{
return 1;
//当n小于2时,直接返回1;因为斐波那契数的前两位都是1
}
else
{
return Fib(n - 1) + Fib(n - 2);
//当n大于2时就可以利用递归求利用前两位的和求出下一位
}
}
int main()
{
//求n个斐波那契数1 1 2 3 5 8 13 21 34 55.....
int n = 0;
scanf("%d", &n);
printf("%d", Fib(n));
return 0;
}
方法二:
int Fib(int n)
{
int a = 1;
int b = 1;
int c = 1;
while (n > 2)
{
//利用循环来求斐波那契数,因为要用递归求比较大的斐波那契数的时候会产生栈溢出的显像所以要利用循环来求
c = a + b;
a = b;
b = c;
n--;
}
return c;
}
int main()
{
//求n个斐波那契数1 1 2 3 5 8 13 21 34 55.....
int n = 0;
scanf("%d", &n);
int ret = Fib(n);
printf("%d",ret);
return 0;
}
标签:契数,return,函数,递归,int,Fib,printf,阶乘,例题 From: https://blog.csdn.net/m0_68801993/article/details/140474616