//函数的递归调用――求n!//请选择空白位置的正确内容#include <;stdio.h>;//用递归实现的计算阶乘的函数long factn(int n){long s;if(n==0)//n为0则结果为1return(1);else//n不为0(实质是指n>;0)则结果为n*(n-1)!{s=________;//递归调用return(s);}}int main(){long n;printf("\n请输入一个不小于0的整数:");scanf("%d",&n);printf("\n%d!=%d\n",n,factn(n));return 0;}
A: n*(n-1)!
B: n*factn(n-1)
C: factn(n-1)
A: n*(n-1)!
B: n*factn(n-1)
C: factn(n-1)
举一反三
- int F(int n){if(n==0)return 1;return n*F(n-1);}是一个递归函数。
- ()设有一个递归算法如下 int fact(int n) { //n大于等于0 if(n<=0) return 1; else return n*fact(n-1); } 则计算fact(n)需要调用该函数的次数为( )
- 读程序并写结果。#include stdio.hlong fun(int n){ long s;if(n==1||n==2)s=2;elses=n-fun(n-1);return s;}int main(){ printf(%ld\n,fun(3)); return 0;}
- int fact(int n) { if ( n<=0) return 1 ; else return n*fact (n-1) ; } 则计算fact(n)需要调用该函数的次数为_____.
- 下面程序的功能是计算 S= 0!+1!+2!+…+k! ( k>=0 )。 #include "stdio.h" long fun(int n) { int i; long s=1; for(i=1; ① ;i++) s*=i; return( ② ); } int main() { int k,n; long s; scanf("%d",&n); s= ③ ; for(k=0;k<=n;k++) s+= ④ ; printf("%ld\n",s); return 0; }