倾泉
2015-06-09 19:50
个人的粗浅理解:
第一天的桃子数=(第二天的桃子数+1)×2,循环到第10天,还剩1个返回值1也就是结束(也可以试试返回值100个随便几个,这个一就是代表到第十天还剩多少个),结束后才执行后面的return num,就是一直循环累加的num。如果不设置返回值他会一直计算无限循环,返回值就像一个数据参考,没有他计算机无法计算这个公式的结果,所以才会无限循环。 printf("第%d天所剩桃子%d个\n", n, num);输出为什么是反向的?因为我们的计算方式是递推1-2-3-...到-10,找到返回值是1,然后才向主函数返回数值9-8-7...-1。也就是回推。
输出的n,num就是计算过程。代表来回循环9次。
return num;代表的是就是“num = (getPeachNumber(n+1)+1)*2; ”一直到第十天的累加。
本身就是一个if...else...的语句,因为有了递归函数的存在,成为无线循环累加。递归更像是定义一个递归变量,设置一个结束点,计算结果。
后面说的不对,主函数调用的是getpeachnumber(1),所以才会有所谓的累加,这不叫累加
C语言入门
926210 学习 · 20797 问题
相似问题