编写递归函数,计算n!。要求n值从主函数输入,n为正整数。

编写递归函数,计算n!。要求n值从主函数输入,n为正整数。


参考答案和解析
用基本运算乘法的运算次数作为衡量时间复杂度的量当n=0时,程序执行if(n==0) return 1;,并没有做乘法,故T(0)=0;当n>=1时程序执行n*Func(n-1);此时T(n)= T(n-1)+1故: 替换法: T(0)=0,T(1)=1,T(2)=2-----总结得到:T(n)=n;归纳法证明:(1),当n=0时,T(0)=0,结论成立;(2)假设当k所以,对所有n>=0有T(n)=n;成立.迭代法:T(n)=T(n-1)+1=(T(n-2)+1)+1=((T(n-3)+1)+1)+1=....=T(0)+1+1......+1(n个1)=n

相关考题:

已知递归函数f 的定义如下:int f (int n){If(n=1)return 1;//递归结束情况else return n*f(n-2);//递归}则函数调用语句f(5)的返回值是( )。

下面是计算n的阶乘的递归函数,请将该函数的定义补充完整。unsigned f(unsigned n){if(n<=1) return 1;else return 【 】;}

请编写函数proc,其功能是:计算并输出下列多项式值。 S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n) 例如,若主函数从键盘给n输入20后,则输出为S= 0.680803。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。 试题程序: include t:stdio.h double proc(int n) { } void main { int n; double slim; printf("\nInput n:"); scanf("%d",&n); sum=proc(n)。 printf("\ns=%f\n",sum); }

( 8 )已知递归函数 f 的定义如下:int f(int n){if (n = 1) return 1; // 递归结束情况else return n * f(n-2); // 递归 }则函数调用语句 f(5) 的返回值是 【 8 】 。

已知递归函数fun的定义如下: int fun(int n) { if(n<=1)return 1;//递归结束情况 else return n*fun(n-2);//递归 } 则函数调用语句fun(5)的返回值是( )。A.5B.12C.15D.30

请补充main函数,该函数的功能是:从键盘输入一个长整数,如果这个数是负数,则取它的绝对值,并显示出来。例如,输入:-3847652,结果为:3847652。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:include<stdio.h>include<conio.h>main(){long int n;clrscr();printf("Enter the data;\n");scanf(【 】);printf("*** the absolute value ***\n");if(n<0)【 】printf("\n\n");printf(【 】);}

T(n)=O(f(n))中,函数O()的正确含义为A.T(n)为f(n)的函数B.T(n)为n的函数C.存在足够大的正整数M,使得T(n)≤M×f(n)D.存在足够大的正整数M,使得M×f(n)≤T(n)

请编写函数fun(),其功能是;计算井输出下列多项式值。S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)例如,若主函数从键盘给n输入8后,则输出为 S-0.662872。注意;部分源程序给出如下。请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。试题程序;include<stdio. h>double fun(int n){}main (){int n;double s;printf("\nInput n: ");scanf ("%d", n);s=fun (n);printf ("\ns=%f\n ", s);}

假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:使字符串中前部的*号不得多余n个;若多余n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。例如,字符串中的内容为****A*BC*DEF*G*******,若 n的值为2,删除后,字符串中的内容则应当是 **A*BC*DEF*G*******;若n的值为4,则字符串中的内容仍为****A*BC*DEF*G******。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序给出如下。请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。试题程序:include <stdio.h>include <conio.h>void fun (char Aa, int n){}main (){ char s[81];int n;printf ("Enter a string : \n") ;gets (s);printf ("Enter n : "); scanf ("%d", n);fun( s,n );printf("The string after deleted :\n");puts (s);}

请编写一个函数inline long sum(int n),用递归函数完成运算:sum(n)=1*1+2*2+…n*n,递归表达式为 sum(n)=sum(n-1)+n2。注意:部分源程序已存在文件test10_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数sum的花括号中填写若干语句。文件test10_2.cpp的内容如下:include<iostream.h>inline long sum(int n){}void main(){int n;cout<<"输入n:";cin>>n;cout<<"结果为:"<<sum(n)<<endl;}

请编写函数fun(),其功能是:计算并输出下列多项式的值。S=1+4/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)例如,着主函数从键盘给n输入50后,则输出为 S=1.960784。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include <stdio.h>double fun(int n){}main (){int n;double s;printf ("\nInput n: ");scanf ("%d", n);s=fun (n);printf ("\n\ns=%f\n\n", s);}

编写函数fun(),函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)例如:若n的值为11时,函数的值为1.833333。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include <conio.h>include <stdio.h>include <string.h>float fun(int n){}main(){int n;float s;clrscr();printf("\nPlease enter N: ");scanf("%d",n);s=fun(n);printf("The result is:%f\n " , s);}

请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。例如,在主函数中从键盘给n输入20后,输出为:s=0.583333。注意:要求n的值不大于100。部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

有如下递归函数:int Fun(int n){if(n<=1) return 1;______}请补充完整,使得函数Fun能够正确计算形参n的阶乘。

设有一个递归算法如下 im fact(int n){ if(n<=0)return 1; else return n * fact(n-1); } 下面正确的叙述是(35)。A.计算fact(n)需要执行n次函数调用B.计算fact(n)需要执行n+1次函数调用C.计算fact(n)需要执行n+2次函数调用D.计算fact(n)需要执行n-1次函数调用

请编写一个函数int sum(int n),该函数完成1+2+3+…+n的运算,并返回运算结果,其中n>0。注意:请使用递归算法实现该函数。注意:部分源程序已存在文件:test11.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数sum的花括号中填写若干语句。文件test11_2.cpp的内容如下:include<iostream.h>int sum(int n){}void main(){int n;cout<<"输入n:";cin>>n;int result;sum(n);cout<<"结果为:"<<result<<endl;}

请编写函数fun,其功能是:计算并输出下列多项式的值:例如,在主函数中从键盘给n输入50后,输出为:s=1.718282。注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(不包括1与自身)的平方和(规定n的值不大于100)。例如:主函数从键盘给输入n的值为56,则输出为 sum=1113。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include <stdio.h>long fun(int n){}main(){int n;long sum;printf("Input n:");scanf("%d",n);sum=fun(n);printf("sum=%ld\n",sum);}

请编写函数fun(),其功能是:计算并输出下列多项式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n-1)+l/2n)例如,若主函数从键盘给n输入12后,则输出为 S=3.775958。n的值要求大于1但不大于100。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include<stdio.h>double fun(int n){}main(){int n;double s;printf("\nlnput n:");scanf("%d",n);s=fun(n);printf("\ns=%f\n",s);}

请编写函数fun(),该函数的功能是:计算并输出S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)例如,若主函数从键盘给n输入20后,则输出为s=534.188884。注意;部分源程序给出如下。请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。试题程序:include <math. h>include <stdio. h>double fun(int n){}main(){int n;double s;printf("\n\nInput n: ");scanf ("%d", n);s=fun (n)printf ("\n\ns=%f\n\n", s);}

请补充main函数,该函数的功能是:输入两个正整数m和n,求这两个数的最大公约和最小公倍数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。试题程序:include <stdio.h>main ( ){int a, b, n, m, t;clrscr ();printf ("\nInput two numbers: \n");scanf ("%d, %d", n, m);if (n<m){a=m;b=n;}else{a=n;b=m;}while(【 】){t=【 】a=b;b=t;}printf ("greatest con. non divisor:%d\n", a);printf ("least common multiple:%d\n",【 】);}

请编写函数fun,其功能是:计算并输出例如,在主函数中从键盘给n输入20后,输出为:s=534.188884。注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

请编写函数proc(),它的功能是计算: s=(1n(1)4-1n(2)+In(3)4-…+1n(m))0.5 在C语言中可调用log(n)函数求1n(n)。 例如,若n1的值为30,则proc()函数值为8.640500。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。 试题程序:

设n的初始值为正整数,设计一个递归算去如下: int fact (int n) { if (n<=0) return l; else return (n*fact (n-l)) ; 以下叙述中正确的是(49) 。A.计算fact(n)需要执行n次函数调用B.计算fact(n)需要执行n+l次函数调用C.计算fact(n)需要执行n+2次函数调用D.计算fact(n)需要执行n-l次函娄[调用

设n的初值为正整数,设计一个递归算法如下:int fact(int n){if(n<=0)return 1;else return(n*fact(n-1));}以下叙述中,正确的是______。A.计算fact(n)需要执行n+2次函数调用B.计算fact(n)需要执行n+1次函数调用C.计算fact(n)需要执行n次函数调用D.计算fact(n)需要执行n-1次函数调用

要求编写一个递归函数“int FF(int a[], int n)”,求出数组a中所有n个元素之积并返回。

要求编写一个主函数,计算并输出12+22+...+n2值,其中n值由键盘输入。

问答题请编写函数fun(),该函数的功能是:计算并输出给定整数n的所有因子(不包括1和自身)之和。规定n的值不大于1000。例如,在主函数中从键盘给n输入的值为856,则输出为:sum=763。  注意:部分源程序给出如下。  请勿改动主函数main()和其他函数中的任何内容,仅在fun()函数的花括号中填入所编写的若干语句。  试题程序如下:/**********code.c**********/#include int fun(int n){}void main(){ int n,sum; printf(Input n: ); scanf(%d,n); sum=fun(n); printf(sum=%d,sum);}