单项选择题

使用递归函数计算n!(n=0,1,2,3,...)的是______

A.fac(int n){int i,f=1;if(n==0)return 1;else for(i=1;i<=n;i++)f*=i;return f;}
B.fac(int n){if(n==0|| n==1)return 1;else return n*fac(n-1);}
C.fac(int n){int i=1,f=1;if(n==0)retum 1;else while(i<=n)f*=i++;return f;}
D.fac(int n){int i=1,f=1;if(n==0)return 1;else do{f*=i;}while(i++<n);return f;}