有两种方法
1、根据之前学习的递归方法求n!,可以输出1-5的阶乘值。程序如下:
2、除此之外,我们也可以用静态局部变量(static局部变量)完成这个程序。
静态局部变量,是函数中的局部变量的值在函数调用结束后不消失而继续保持原值,即其占用的存储单元不释放,在下一次再调用该函数时,该变量已有值(就是上一次函数调用结束时的值)。静态局部变量用关键字static进行声明。
静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。
对于这个题,有以下说明:
(1)每次调用fac(i),输出一个i!,同时保留这个i!的值以便下次再乘(i+1)。
(2)如果函数中的变量只被引用而不改变值,则定义为静态局部变量(同时初始化)比较方便,以免每次调用时重新赋值。
但是,用静态存储要多占内存(长期占用不释放,而不能像动态存储那样一个存储单元可以先后为多个变量使用,节约内存),而且降低了程序的可读性,当调用次数多时往往弄不清静态局部变量的当前值是什么。
该题的输出结果为