1个回答
展开全部
这是用递归的方法实现各位正序计算、倒序打印的。
举例说明:
n=10 打印二进制数
f1(10): 10不等于0调用f1(10/2),f1(10)函数至此等待,直到f1(10/2)返回后继续运行
f1(5): 5不等于0调用f1(5/2),f1(5)函数至此等待,直到f1(5/2)返回后继续运行
f1(2): 2不等于0调用f1(2/2),f1(2)函数至此等待,直到f1(2/2)返回后继续运行
f1(1): 1不等于0调用f1(1/2),f1(1)函数至此等待,直到f1(1/2)返回后继续运行
f1(0): 0等于0,执行return; 结束f1(0)的调用返回f1(1)函数继续运行
打印n%2,1%2=1累计显示:1,结束f1(1)的调用返回f1(2)函数继续运行
打印n%2,2%2=0累计显示:10,结束f1(2)的调用返回f1(5)函数继续运行
打印n%2,5%2=1累计显示:101,结束f1(5)的调用返回f1(10)函数继续运行
打印n%2,10%2=0累计显示:1010,结束f1(10)的调用返回主程序继续运行
所谓递归函数,就是相同的函数不再重复写,函数名都用一个,但系统会采取手段达到互相不干扰的效果,你可以理解调用f1(10)时是一个函数,而f1(10)中调用f1函数时是另外一个函数f1',f1用到的参数n或开设的变量与f1‘的互不干扰,依此类推来手动跟踪程序运行。
举例说明:
n=10 打印二进制数
f1(10): 10不等于0调用f1(10/2),f1(10)函数至此等待,直到f1(10/2)返回后继续运行
f1(5): 5不等于0调用f1(5/2),f1(5)函数至此等待,直到f1(5/2)返回后继续运行
f1(2): 2不等于0调用f1(2/2),f1(2)函数至此等待,直到f1(2/2)返回后继续运行
f1(1): 1不等于0调用f1(1/2),f1(1)函数至此等待,直到f1(1/2)返回后继续运行
f1(0): 0等于0,执行return; 结束f1(0)的调用返回f1(1)函数继续运行
打印n%2,1%2=1累计显示:1,结束f1(1)的调用返回f1(2)函数继续运行
打印n%2,2%2=0累计显示:10,结束f1(2)的调用返回f1(5)函数继续运行
打印n%2,5%2=1累计显示:101,结束f1(5)的调用返回f1(10)函数继续运行
打印n%2,10%2=0累计显示:1010,结束f1(10)的调用返回主程序继续运行
所谓递归函数,就是相同的函数不再重复写,函数名都用一个,但系统会采取手段达到互相不干扰的效果,你可以理解调用f1(10)时是一个函数,而f1(10)中调用f1函数时是另外一个函数f1',f1用到的参数n或开设的变量与f1‘的互不干扰,依此类推来手动跟踪程序运行。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询