1. c语言题:用递归法求20个阶乘
#include"stdio.h"
doublejc(doublen)
{
if(n>1)
returnjc(n-1)*n;
else
return1;
}
intmain()
{
doublei;
for(i=0;i<=20;i++)
printf("%.0lf ",jc(i));
}
再给一个完全用递归的:
#include"stdio.h"
doublejc(doublem,doublen)
{
if(m>1)
{
if(n>1)
{
if(m==n)
printf("%.0lf ",jc(m,n-1)*n);
else
returnjc(m,n-1)*n;
}
else
{
if(m>0)
jc(m-1,m-1);
return1;
}
}
else
{
printf("1 ");
}
}
intmain()
{
doubles[20],m;
m=20;
jc(m,m);
}
2. sql server while语句用法问题:计算20的阶乘 错误提示如下图:
修改了几个地方:
DECLARE@iint,@gbigint--修改处1
SET@i=1
SET@g=1
while@i<=20--修改处2
begin
SET@g=@g*@i--修改处3
SET@i=@i+1
END
PRINT'20!='+convert(varchar,@g)--修改处4
3. 递归算法计算20的阶乘
def fun(int n):
if n=1:
return 1
else:
return n*fun(n-1)
4. 在SQLserver中用while循环语句编写20的阶乘程序,并用print语句输出结果请大家多多指教,谢谢!
declare @sum bigint
declare @i int
set @sum = 1
set @i = 2
while(@i <= 20)
begin
set @sum = @i * @sum
set @i = @i + 1
end
print @sum
一个建议,想要学得真本事,问题就得自己尝试解决,除非你只是想敷衍自己
5. Java中怎样用递归函数求20的阶乘
public class DiGui {
public static void main(String[] args) {
DiGui d = new DiGui();
System.out.print(d.TT(20));
}
public double TT(int i)//写一个返回值为double 类型的方法,20的阶层值比较大int类型的值无法表示
{ //方法体比较简单
if(i <= 1)
{
return i;
}
else
{
return i*TT(i-1);//方法自己调用自己呵呵。。。
}
}
}
6. C++ 用递归法求1到20的阶乘之和
#include <stdio.h>
long fac(int n)//求n!阶乘的递归算法
{
long f;
if(n==0||n==1)f=1;
else f=fac(n-1)*n;
return f;
}
int main(){
long sum;
sum=0;
int i;
for(i=1;i<=20;i++)
sum+=fac(i);
printf("The result is %ld . ",sum);
return 0;
}
7. 1到20的阶乘 C语言
用递归就行了,问题是阶乘1到20已经溢出了unsigned
long
int的最大数值,1到16就已经溢出了,何况你的还是有符号的,比无符号的少差不多一半.
这个用递归实现的.
#include<stdio.h>
void
main()
{
int
fac(int
x);
unsigned
long
int
y;
int
x;
printf("请输入一个整数:");
scanf("%d",&x);
y=fac(x);
printf("%ld\n",y);
}
int
fac(int
x)
{
unsigned
long
int
y;
if(x==1)
{
y=1;
}
else
y=fac(x-1)*x;
return
y;
}
8. 用递规函数求20的阶乘
#include "stdafx.h"
#include "math.h"
#define MAX_N 10000000.00 //能够计算的最大的n值,如果你想计算更大的数对数,可将其改为更大的值
#define MAX_MANTISSA (1e308/MAX_N) //最大尾数 (10^308/10000000=10^300)
struct bigNum
{
double n1; //表示尾数部分
int n2; //表示指数部分
};
void calcFac(struct bigNum *p,int n)
{
int i;
double MAX_POW10_LOG=(floor(log10(1e308/MAX_N))); //最大尾数的常用对数的整数部分,
double MAX_POW10=(pow(10.00, MAX_POW10_LOG)); // 10 ^ MAX_POW10_LOG
p->n1=1;
p->n2=0;
for (i=1;i<=n;i++)
{
if (p->n1>=MAX_MANTISSA)
{
p->n1 /= MAX_POW10;
p->n2 += MAX_POW10_LOG;
}
p->n1 *=(double)i;
}
}
void printfResult(struct bigNum *p,char buff[])
{
while (p->n1 >=10.00 )
{p->n1/=10.00; p->n2++;}
sprintf(buff,"%.14fe%d",p->n1,p->n2);
}
int main(int argc, char* argv[])
{
struct bigNum r;
char buff[32];
int n;
printf("n=?");
scanf("%d",&n);
calcFac(&r,n); //计算n的阶乘
printfResult(&r,buff); //将结果转化一个字符串
printf("%d!=%s\n",n,buff);
return 0;
}
9. 怎么在SQL数据库中求一个数的阶乘
摘要 你好!居然用SQL这种集合操作语言,来做类C的函数式语言的事(虽然是可以的):(
10. 怎么用Java程序计算20的阶乘
java程序计算20的阶乘,通过使用bigdecimal类来接收数据,如下例子:
publicclassTest{
publicstaticvoidmain(String[]args){
BigDecimalcnt=newBigDecimal(0);
for(inti=1;i<=20;i++){
cnt=cnt.add(jiecheng(i));//循环计算20之内的阶乘
}
System.out.println(cnt);
}
(intn){
if(n==1){
returnnewBigDecimal(1);
}
//multiply()相乘
returnjiecheng(n-1).multiply(newBigDecimal(n));
}
}