题目:编写一个程序,求整数n的阶乘,例如5的阶乘是1*2*3*4*5
初见题目,分析可得:
方法1:由定义,阶乘都是由1开始,可以从正面,并用for循环,用所定义的数字做上限,求出阶乘。
输入的数字为阶乘算式的上限,通过for循环,用1*不断开始相乘;
当num=3;则运算过程如下:
i=1,i<=3, 1*1=1; 1++;
i=2,2<=3 1*2=2; 2++;
i=3,3<=3 2*3=6; 3++;
i=4,4!<=3 所以3的阶乘为1*2*3=6;
方法2:运用递归,构造一个方法,自己不断调用自己去进行赋值运算;
从阶乘的上限开始入手,同方法一假设求3的阶乘
3!=3*2*1, 由算式可得:第一位为上限,接下来的数都是由上限不断递减;
即 int num=3;
3!=num*(num-1)*(num-1-1)
可看作:3!=num*(num-1)*((num-1)-1)-------后者可以继续用query方法并用num-1继续调用;
同时为了保证int都是正整数;可以加多一个判断条件:
总结:
(1)for循环通过不断循环可以从正序,即从1到所定上限算出阶乘,是一种正向思维;
(2)运用递归方法效率比较快高,运用到了一定的嵌套思维,比for难理解一些,但是运用起来效率比for循环的效率高。