欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > static 用法,函数递归与迭代详解

static 用法,函数递归与迭代详解

2025/3/11 13:19:12 来源:https://blog.csdn.net/2401_90040984/article/details/145923413  浏览:    关键词:static 用法,函数递归与迭代详解

一、static的用法:1、修饰局部变量 2、修饰全局变量 3、修饰函数

1、修饰局部变量:改变了变量的生命周期,生命周期的改变的本质是改变了变量的存储类型,本来局部变量是存储在内存的栈区的,但是被static修饰后储存在静态区。存储在静态区的变量和全局变量是一样的,生命周期和程序的生命周期一样了,只有程序结束,变量才销毁,内存才回收,但是作用域是不变的。

2、static修饰全局变量:

全局变量是默认的带有外部链接属性。static修饰全局变量的时候,改变了全局变量的链接属性;使得外部链接属性变成内部连接属性。这种变量只能在自己所在的 .c(源文件)文件中使用,其他.c文件无法使用。

如果一个全局变量,只想在所在的源文件内部使用,不想被其他文件发现,就可以使用static修饰。

3、static修饰函数(和static修饰全局变量类似):函数也是具有外部链接属性,只要在其他的.c文件中正确的声明也是可以使用的,static修饰函数,让函数的外部链接属性变成内部链接属性,使函数只能在自己所在的.c文件中使用,其他的.c文件无法使用。

二、函数递归

什么是函数递归呢?函数递归就是函数自己调用自己,如果函数无限递归下去,就会出现栈溢出的错误。每一次函数调用,都要为这次函数调用分配内存空间,是内存的栈区上分配的,如果无限的递归调用函数,就会将栈区空间填满(使用完),这时就出现了栈溢出的现象。

递归思想:把大型复杂的问题层层转化为与一个原问题相似,但是规模较小的子问题来求解,直到子问题不能被拆分,递归就结束了,所以递归的思考方式是把大事化小小事化了了过程。

递归递归:简而言之‘递’就是递推,‘归’就是回归的意思。

举例如下:求n的阶乘:

主要思路是:

代码的表达是:如下图:5的阶乘是120

图四是整个流程:

举例二:顺序打印一个整数的每一位:

输入一个整数m,按照顺序打印整数的每一位。

思维导图:

结果为:但是题目是要顺序打印每一位但是结果是这样的? 有没有可以解决的办法呢?

答案当然是有的!!!其实只需要稍微修改一下代码就可以了。

思维导图:

如果不想使用递归可以使用迭代的方法:迭代的其中一种叫循环,迭代不仅仅只是包括循环。如

下:

举例3:斐波那契数列:数列从第0项或者第1项开始,后续每一项均为前俩项之和。

很容易就写下如图的递归求斐波那契数列,斐波那契数列是不合适用递归的,但是要通过使用递归的形式来描述的。

用迭代的方法:

到这里递归就结束了

今天就给大家分享到这里,我们下期在见!!!

如有不足,请多多指正。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词