练习:计算N!程序实验 1.实验内容 编程计算N!(8 >=N >=0)的值。要求将计算N!编为递归子程序。(用mov ah,01h int 21h进行自由输入) 结果转化为10进制用mov ah,02h int 21h输出2。编程指导 由阶乘的递归定义得知: N!=1当N=0时 N!=N*(N-1)!当N>0时 为了求得N!的值必须递归调用(N-1)!的子程序,但每次调用的参数都是不同的。
第一次以N为参数,因为要求得N!,必须要先求出(N-l)!,所以第二次调用时是以(N-1)为参数。同样为了求得(N-1)!,必须先求出(N-2)!,.因此第三次调用是以(N-2)为参数,依次类推,直到参数为0时止。此时,将每一步调用的结果相乘就是最终的N!值。设计递归子程序时,必须保证每次对它的调用都不会破坏以前调用时所用的参数和中间结果,因此,在这样的子程序刚开始一般都要对现场进行进栈保护。
另外,递归的结束条件也是相当重要的,选择不好,很容易造成死锁,而不能从递归子程序中返回出来。在该例中0!=1,因此,判断入口参数是否为0就是这个递归子程序递归的结束条件。 哪位大虾会做帮个忙啊~需要用上CALL以及RET指令。