十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
首先要理解递归的概念,先递后归
成都创新互联公司主营成武网站建设的网络公司,主营网站建设方案,app软件开发,成武h5成都小程序开发搭建,成武网站营销推广欢迎成武等地区企业咨询
开始递
get(1) n=1不成立,执行else
get(2) n=2不成立,执行else
get(3) n=3不成立,执行else
get(4) n=4不成立,执行else
get(5) n=5不成立,执行else
get(6) n=6不成立, 执行else
get(7) n=7不成立, 执行else
get(8) n=8不成立, 执行else
get(9) n=9不成立 执行else
get(10) n=10成立,返回值1
开始归!
get(10) num=1
get(9) get(n+1)*2+2 = 1*2+2=4 //这里说下为什么不在递的时候计算else呢?因为在递的时候我们并不知道他们上一次的值,所以是没办法计算的,这里get(n+1)已经知道了上一次的值get(10)是1。
get(8) get(n+1)*2+2 = 4*2+2 =10
get(7) get(n+1)*2+2 = 10*2+2 = 22
get(6) get(n+1)*2+2 = 22*2+2 = 46
get(5) get(n+1)*2+2 = 46*2+2 = 94
get(4) get(n+1)*2+2 = 94*2+2 = 190
get(3) get(n+1)*2+2 = 190*2+2 = 382
get(2) get(n+1)*2+2 = 382*2+2 = 766
get(1) get(n+1)*2+2 = 766*2+2 = 1534
至此递归条件结束
这里有C的视频教程不过个人觉得没什么用
我怎么也看不进
到是自己后来看看各种资料要好的多
递归,是函数实现的一个很重要的环节,很多程序中都或多或少的使用了递归函数。递归的意思就是函数自己调用自己本身,或者在自己函数调用的下级函数中调用自己。
递归之所以能实现,是因为函数的每个执行过程都在栈中有自己的形参和局部变量的拷贝,这些拷贝和函数的其他执行过程毫不相干。这种机制是当代大多数程序设计语言实现子程序结构的基础,是使得递归成为可能。假定某个调用函数调用了一个被调用函数,再假定被调用函数又反过来调用了调用函数。这第二个调用就被称为调用函数的递归,因为它发生在调用函数的当前执行过程运行完毕之前。而且,因为这个原先的调用函数、现在的被调用函数在栈中较低的位置有它独立的一组参数和自变量,原先的参数和变量将不受影响,所以递归能正常工作。程序遍历执行这些函数的过程就被称为递归下降。
程序员需保证递归函数不会随意改变静态变量和全局变量的值,以避免在递归下降过程中的上层函数出错。程序员还必须确保有一个终止条件来结束递归下降过程,并且返回到顶层。