『壹』 my sql計算任意整數N的階乘
你的目的:計算任意整數N的階乘:可能會出現問題,當乘積 大於 bigint的最大值後,就會出錯,比如 10000000的10000000次方或者更大的次方,肯定大於bigint的最大值,所以下面的存儲過程,進階成績在一定的范圍內有效。
我來回答吧,我測試過沒有問題的
DELIMITER $$
CREATE PROCEDURE `Squair`(input int, n int)
BEGIN
declare totail bigint default input;
declare _index int default 1;
emp_loop: LOOP
if _index >= n then
LEAVE emp_loop;
end if;
set totail = totail * input;
set _index = _index + 1;
end loop emp_loop;
select totail;
END $$
DELIMITER ;
-- 執行
CALL Squair(10,5);
-- 執行下面的語句將會出錯
CALL Squair(10000000,10000000);
『貳』 這個sql程序是怎麼執行的10的階乘的運算,能不能詳細點
從With符號標記得到的查詢緩存表MyCTE中得到我們需要的值是最後一句的意思。
AS之中的句子可以這么理解:
選出n=1和njc=1到查詢表MyCTE中。union all,關聯之後的查詢中所得的所有結果。而在SELECT n,njc。。。的語句的意思是, 從表MyCTE中選出所有的n和njc的值,且條件是n小於10,並把n加1和njc與n+1相乘得出來的值加以顯示,但是因為其實在MyCTE標識的語句中的SELECT語句,所以選取出的結果會放在緩存表MyCTE中。又因為SELECT語句選擇時對於數據的選取是逐條進行比對的,所以當上一條數據比對完成並選取出結果的時候,新的選取結果同時會加入到查詢緩存表MyCTE中,所以Select會對這條新的數據進行篩選,逐步下去,就成啦圖中顯示的這樣。
『叄』 如何在SQL SERVER中實現階乘運算
以下為求10的階乘的代碼
declare @i int,@r int
set @i=1
set @r=1
while @i<=10
begin
set @r=@r*@i
set @i=@i+1
end
--顯示10的階乘的結果
print @r
--上面一行也可以換成 select @r
祝你好運!
『肆』 用T-SQL語句做計算1至5階乘之和
T-SQL不會,以下是另外兩種方法:
第1種:
insert into table1 (shuzi) values (1);
insert into table1 (shuzi) values (2);
insert into table1 (shuzi) values (3);
insert into table1 (shuzi) values (4);
insert into table1 (shuzi) values (5);
select sum(shuzi * shuzi) 結果 from table1
第2種(pl_sql):
declare
number1 number := 1;
number2 number := 5;
i number;
jieguo number :=0;
begin
for i in number1..number2 loop
jieguo := jieguo + i * i;
end loop;
dbms_output.put_line(jieguo);
end;
『伍』 SQL求N!(N的階乘)!在線等謝謝了啊
存儲過程如下:
CREATE PROCEDURE factorial
@n int
AS
declare @i int,@result bigint
set @i=1
set @result=1
while @i<=@n
begin
set @result=@result*@i
set @i=@i+1
end
print @result
GO
使用方法:
exec factorial 數字
『陸』 用資料庫怎樣求解階乘
declare @sum bigint,@count int
select @sum=1,@count=1
label:
select @sum=@sum*@count
select @count=@count +1
if @count <=20
goto label
select @sum
這個是sql的 1到20的階乘 count少於15可以直接定義@sum int 大於的話會算數溢出
『柒』 sql 求n階乘
create procere的意思就是建立存儲過程,factorial是存儲過程的名字,@n int定義參數,用來將要計算階乘的數值傳入存儲過程,as關鍵字後面就是存儲過程的定義語句了。
『捌』 如何在sql中實現階乘運算
????
這個??
『玖』 怎麼在SQL資料庫中求一個數的階乘
createfunctionjc(@Aint)
returnsbigintas
begin
declare@Rbigint,@Iint
set@R=1
set@I=1
while@I<=@A
begin
set@R=@R*@I
set@I=@I+1
end
return@R
end
『拾』 pl/sql 計算階乘相加 如:S=2!+4!+6!+8!+10!
declare @x int,@num int,@i int,@r int
set @x=1
set @num=0
set @i=1
set @r=1
while @x<=5
begin
while @i<=2*@x
begin
set @r=@r*@i
set @i=@i+1
end
set @num=@num+@r
set @x=@x+1
end
print @num --這個地方可能與plsql的輸出不相同
以上程序已經在sqlserver2000中運行通過。
如果以上程序語法有和plsql不相同的地方稍加修改即可。
最後結果為:3669866