问答题
使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成以下函数:int factorial(int n):求出n的阶乘,必须使用递归调用。如果n小于1则返回0。注意:不能修改函数的其他部分。#include<iostream.h>#include<ctype.h>int factorial(int n){}void main(){cout<<factorial(1)<<endl;cout<<factorial(5)<<endl;cout<<factorial(0)<<endl;return;}
【正确答案】正确答案:if (n<1) { return0; } else if(n==1) { return1; } elsse { return n*factorial(n-1); }
【答案解析】解析:(1)先考虑最简单的情况,n为1(或小于1)时返回值应该为1,即factorial(1)=1,这是递归结束条件,如果n大于1则递归调用自己。 (2)n>1时,此时递归函数调用自己,即factorial(n)=n*factorial(n-1),此时的函数的返同值是n*factorial(n-1),如此来实现递归调用。