今日份学习成果

文章介绍了递归的概念,即程序调用自身的编程技巧,常用于解决复杂问题的简化。文中提到了递归的两个必要条件:限制条件和逐步接近限制条件。通过斐波那契数列的例子,展示了递归和迭代两种方法,指出在处理某些问题时,迭代可能避免栈溢出。此外,还讨论了其他递归应用,如汉诺塔问题和青蛙跳台阶问题。
摘要由CSDN通过智能技术生成

函数递归:什么是递归?
程序调用自身的编程技巧成为递归(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 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值