扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
循环与递归的本质区别在于内存的使用上,递归是方法调用方法本身,而随着递归的次数的增加,内存的消耗也是不断增长,而在我们写代码时,内存是一个很重要的部分,我们尽量都是减少内存的消耗,以免造成对系统资源的浪费,循环占用的内存很少,每次循环都会释放之前分配的内存,但是很多递归的功能是不能用循环实现的,这就要考虑你要实现的功能了,如果非递归不可完成的功能,我们也不会刻意更改。
我们提供的服务有:网站建设、网站制作、微信公众号开发、网站优化、网站认证、离石ssl等。为超过千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的离石网站制作公司
递归是函数体中调用自己,如果不加控制,将无休止的调用自己,直到堆栈溢出。循环是反复执行某一段区域内的代码,如果不加控制,就会形成死循环。所以不管是递归还是循环,都要设定一定的条件,以结束递归或循环。实际问题中,有一些问题是递归的,这样的问题使用递归程序解决感觉会自然些,程序也会简单些,但是,递归要经常调用函数,开销(内存、时间)大,有些问题就不适宜使用,循环不需要调用自身,甚至可以不调用函数,效率高,不过,要将递归问题改成非递归,可能就要动动脑筋。上例中pow2 函数实现部分指数计算功能,(b, n-1) =3 这个提法有问题,因为递归调用时,在返回之前系统堆栈上有一大堆(从第一次调用知道条件满足时的次数)的该递归函数,条件满足后这一系列的函数依次返回。上述函数运行过程是这样的: 执行主函数的 pow2(3, 2); 后:1: b = 3 n = 2 此时 n 0; pow2 调用自身(即递归调用): pow2(b, n-1) * b 后:2: b = 3 n = 1 此时 n 0; pow2 调用自身(即递归调用): pow2(b, n-1) * b 后:3: b = 3 n = 0 此时 n = 0, if (n = 0) 条件满足 1; 递归函数第一次(函数最后依次递归调用)返回,值为 14: 上一次 pow2(b, n-1) 返回值为 1,return pow2(b, n-1) * b; 所以本次(第2次)返回 35: 上一次 pow2(b, n-1) 返回值为 3,return pow2(b, n-1) * b; 所以本次(第1次)返回 96: 函数main得到 pow2 的返回值 9
一、语法不同
if:IF(logical_test,value_if_true,value_if_false)
while:while<条件>do<语句>
二、功能不同
if语句,if( ),括号里的内容和while( )里的内容都是判定句,判定为真则执行语句,假则不执行语句。
不同点就是if没有循环的性子,一旦执行过后就跳出语句,而while判定为真后执行它下面的语句,执行完后返回括号里继续判定,判定为真继续执行语句知道括号里判定为假为止。
三、意思不同
while是循环语句,在C语言中通常用while来表示循环,例如在main()函数中一般都用while(1)来让主程序循环执行。
while语句叫做循环语句。同样是判断条件是否成立。但是执行完毕后继续判断该条件,直到该条件不成立则转入下一条语句。
扩展资料:
for循环是编程语言中一种开界的循环语句,而循环语句由循环体及循环的终止条件两部分组成,for循环其在各种编程语言中的实现与表达有所出入,但基本为以C语言和pascal语言代表的两种形式。
程序解读:
开始i=0,i<10,执行for循环的内部语句,然后回到i++,i=2,i<10,执行for循环的内部语句,……,直到i++后变成11,11<10,不成立,返回0,循环结束。
1、for循环中的变量可以是一个也可以是多个,不要局限于一个变量处理到底,那样有时会很单调,当程序适合把多个变量组成循环时,用多个for语句来表示就是有些浪费了!
2、for循环中语句可以为语句体, 语句体外加大括号"{}"将参加循环的语句括起来。 for循环的三个表达式都是逗号表达式,这样来说,其实每个分号表达式可以由几个逗号表达式构成,中间用",”隔开,最后以“;”结束。
3、 for循环中的"单次表达式"、"条件表达式"和"循环体语句"都是选择项, 即可以缺省成只剩下“;”的空语句, ";"不能缺省的原因是编译格式如此,缺省了编译器不认识而会报错。
参考资料来源:百度百科-c语言
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流