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