当前位置:首页 » 编程语言 » sql使用递归写出20的阶乘
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql使用递归写出20的阶乘

发布时间: 2022-04-15 01:47:56

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));
}
}