函数递归:什么是递归?
程序调用自身的编程技巧成为递归(recursion)。递归作为一种算法在程序设计语言中广泛应用,一个
过程或函数在其定义或说明有直接或间接调用自身的一种方法,它通常把一个大型重复的问题层层转化为一个
与原问题规模较小的问题来求解,递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算,大大
减少了程序的代码量,递归的主要思考方式在于:把大事化小。
递归的两个必要条件:
1.存在限制条件,当满足这个限制条件的时候,递归便不再继续。
2.每次进行递归调用之后越来越接近这个限制条件。
在解决斐波那契数列问题时使用函数迭代而不是用函数递归否则会导致栈溢出。
相关的训练有:斐波那契数列
汉诺塔问题
青蛙跳台阶问题
#include<stdio.h>
/*int my_strlen(char* arr)
{
if (*arr != '\0')
{
return 1 + my_strlen(arr + 1);
}
else
{
return 0;
}
}
int main()
{
char arr[] = "bitrtttttt";
int len = my_strlen(arr);
printf("%d", len);
return 0;
}*/
/*int Add(int a)
{
if (a > 2)
{
return Add(a - 1) + Add(a - 2);
}
else
{
return 1;
}
}
int main()
{
int a = 5;
printf("请输入你所求的斐波那契数列");
int ret=Add(a);
printf("%d", ret);
return 0;
}*/
/*int Fdd(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()
{
int n= 3;
int Fdd(n);
printf("%d", Fdd(n));
return 0;
}*/
/*int add(int n)
{
int b = 1;
for (n; n >= 1; n--)
{
b *= n;
}
return b;
}
int main()
{
int n = 5;
int sum = add(n);
printf("%d", sum);
return 0;
}*/
/*int sum(int k)
{
if (k > 1)
{
return k * sum(k - 1);
}
else
return 1;
}
int main()
{
int k = 3;
sum(k);
printf("%d", sum(k));
return 0;
}*/
#include<stdlib.h>
/*int