當前位置:首頁 » 編程語言 » 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));
}
}