首页/ 题库 / [单选题]设n的初始值为正整数,设计一个递归算去如的答案

设n的初始值为正整数,设计一个递归算去如下: int fact (int n) { if (n<=0) return l; else return (n*fact (n-l)) ; 以下叙述中正确的是(49) 。

单选题
2022-01-02 06:57
A、计算fact(n)需要执行n次函数调用
B、计算fact(n)需要执行n+l次函数调用
C、计算fact(n)需要执行n+2次函数调用
D、计算fact(n)需要执行n-l次函娄[调用
查看答案

正确答案
B

试题解析
本题考查函数递归调用方面的相关知识。递归法是描述算法的一种强有力的方法,其思想是:将N=n时不能直接求解的问题,设法递归(压栈)转化为求n-l,n-2,…的问题一直到N=O或1的初始情况,由于初始情况的解可以给出或方便得到,因此,开始层层退栈得到N=2,3,…,n时的解,直到得到最终结果。本题中,主程序调用fact(n)称为外部调用,其他调用称为内部调用,直到调用fact(0)为止。fact(n)调用fact(n-l),fact(n-l)调用fac(n-2),…,fact(l)调用fact(0),内部调用n次,外部调用一次,共n+l次。

标签:
感兴趣题目
执行下列程序之后,变量n的值为( )。 public class Exam{ public static void main(String[]args){ int y=2; int z=3: int n=4: n=n+-y*z/n; System.out.println(n); } }
执行下列程序之后,变量n的值为 public class Exam{ public static void main (String[]args){ int y=2; int z=3; int n=4; n=n+-y*z/n; System.out.prinlitln(n): } }
执行下列程序段之后,变量n的值为( )。 public class Test { public static void main(String[ ] args){ int y = 2; int z = 3; int n = 4; n=n+-y* z/n; System.out.println(n); } }
执行下列程序之后,变量n的值为( )。public class Exam{public static void main (String[] args){ int y=2; int z=3; int n=4; n=n+-y*z/n; System.out.println(n); }}
执行下列程序之后,变量n的值为 public class Exam{ public static void main(String[]args){ int y=2; int z=3; int n=4; n=n+-y*z/n; System.out.println(n); } }
执行下列程序之后,变量n的值为( )。 public class Test { publie static void main (String[] args) { int y=2; int z=3; int n=4; n=n+ -y * z/n; System. out. println (n); } }
执行下列程序之后,变量n的值为______。 public class Test{ public static void main(String[ ]args){ int y=2; int z=3; int n=4; n=n+-y*z/n; System.out.println(n); } }
有如下类声明: class Base{ protected: int amount; public: Base(int n=0):araount(n){ } int getAmount( )const{retum amount;} }; class Derived:public Base{ protected; int value; public: Derived(int m,int n):value(n1),Base(n){ } int getData( )const{return value+amount;} }; 已知x是一个Derived对象,则下列表达式中正确的是
有以下程序: #include <iostream> using namespace std; int s=0; class sample { static int n; public: sample (int i) { n=i; } static void add() { s+=n; } }; int sample::n=0;
请写出下列代码段的运行结果 int i=1,n=-1; if(i==0); n=100; Console.Write(n);
以下程序的输出结果是( )。 #include<stdio.h> int fun(int n,int *s) { int f1,f2; if(n==0||n==1) *s=1; else { fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2; } } void main() { int x; fun(6,&x); printf(" %d" ,x);}
下面是一个对整数数组A中的前n个元素求最小值的C程序,函数返回最小元素的位置。 Int minValue(int A[],int n){ int k=0: for(int j=1;j<=n-1;j++) if(A[j]<a[k])k=j; return k: 当n=4时,程序中可能的执行路径数为______。
相关题目
设int n;,执行表达式(n=0)||(n=1)||(n=2)||(n=3)后,n的值是( )
以下程序的运行结果是( )。main(){int n;for(n=1;n<=10;n++){if(n%3==0)continue;printf("%d ",n);}}
假定有如下程序: #include <iostream> using namespace std; int s =0; class example{ static int n; public: example(int i){ n=i; } static void add( ){ s+=n; } }; int example::n=0; int main( ){ example a(2),b(5); example::add(); cout<<s<<endl; return 0; }程序运行后输出结果为( )。
执行下列语句后,i和n的值为 ( ) int i=10; int n=i++%5;
执行下列语句后i 和n的值为( )。int i=10;int n=i++%5;
for(int i=0;in/2){cout<<><>
算法可以有0~n(设n、m为正整数)个输入,有()个输出。
在域F中,e是单位元,存在n,n为正整数使得ne=0成立的正整数n是什么?()
设n的初始值为正整数,设计一个递归算去如下: int fact (int n) { if (n<=0) return l; else return (n*fact (n-l)) ; 以下叙述中正确的是(49) 。
C#中执行下列语句后,int n=21;n<<=1;n的值为()
设有一个递归算法如下int fact(intn){//n 大于等于0 if(n<=0)return 1; else return n* fact(n--); }则计算fact(n)需要调用该函数的次数为(30)次。
设有一个递归算法如下 im fact(int n){ if(n<=0)return 1; else return n * fact(n-1); } 下面正确的叙述是(35)。
已知递归函数fun的定义如下: int fun(int n) { if(n<=1)return 1;//递归结束情况 else return n*fun(n-2);//递归 } 则函数调用语句fun(5)的返回值是( )。
已知递归函数fun的定义如下: int fun(int n) { if(n<=1)return1;//递归结束情况 else return n*fun(n-2);//递归 } 则函数调用语句fun(5)的返回值是( )。
下面是一个递归Java程序,其功能为 ( ) long Factorial(int n){ if(1==n){ return 1; } else return n * Factorial (n-1); }
设有一个递归算法如下: int fact(int n){ if(n<=0)return 1; else return n*fact(n-1); } 下面正确的叙述是(35)。
若有如下程序:#include <iostream>using namespaces std;int s=0;class sample{static int n;public:sample(int i){ n=i;}static void add(){ s+=n;}};int sample:: n=0;int main(){sample a(2),b(5);sample:: add();cout<<s<<end1;return 0;}程序运行后的输出结果是( )。
若有如下程序: #include<iostream> using namespace std; int s=0; class sample { static int n; public: sample(int i) { n=i; } static void add() { S+=n; } }; int sample::n=0; int main() { sample a(2),b(5); sample::add(); cout<<s<<endl; return 0; } 程序运行后的输出结果是( )。
有以下程序 void f(int n,int *r) { int r1=0; if(n%3==0) r1=n/3; else if(n%5==0) r1=n/5; else f(--n,&r1); *r=r1; } main() { int m=7,r; f(m,&r);printf("%d",r); } 程序运行后的输出结果是
有以下程序: void f(int n,int * r) {int r1=0; if(n%3==0)r1=n/3; else if(n%5==0)r1=n/5; else f(--n,&r1); *r=r1;} main() {intm=7,r; f(m,&r);printf("%d ",r);} 程序运行后的输出结果是______。
广告位招租WX:84302438

免费的网站请分享给朋友吧