sql - While 循环 SQL Server
问题描述
请帮帮我。我需要编写两个函数,一个计算阶乘,另一个计算欧拉之和。
为了进行欧拉和,我需要使用计算工厂的函数。我已经有了阶乘的功能,但是在求和时我得到“NULL”
注意:需要用“while”循环来完成
e = 1 + (1/1!) + (1/2!) + (1/3!) + (1/n!)
我的代码:
CREATE FUNCTION Factorial (@a INT)
RETURNS INT
AS
BEGIN
DECLARE @i INT
IF @a <= 1
SET @i =1
ELSE
SET @i = @a * dbo.Factorial(@a-1)
RETURN @i
END
SELECT dbo.Factorial(11) 'factorial'
CREATE FUNCTION Sum_Euler(@a FLOAT)
RETURNS FLOAT
BEGIN
DECLARE @b FLOAT,
@c FLOAT;
SET @c = (SELECT dbo.Factorial(@a))
WHILE(@b <= @c)
BEGIN
SET @b = 1 / @a * @c
END
SET @b = @b + 1
RETURN @b
END
GO
SELECT dbo.Sum_Euler(10)
解决方案
我将对您的第二个功能进行以下更改
create FUNCTION dbo.Sum_Euler(@a int)
RETURNS float
BEGIN
DECLARE @b float;
if @a<=1
set @b =1.0+1.0;
else
begin
set @b = dbo.Sum_Euler(@a-1) + 1.0/dbo.Factorial(@a);
end
RETURN @b;
END
GO
select dbo.Sum_Euler(10)
将返回2.718281801142
推荐阅读
- apache-spark - 我怎样才能杀死卡住的工作而不杀死 Spark 中的应用程序?
- java - 如何让paintComponent 使用我的代码?
- linux - 引用部分 getopts 参数
- amazon-s3 - Minio 移除对象
- mysql - Mysql,在更新语句中,条件有主键列和非索引列那么是表级锁定还是行级锁定?
- email - 如何阻止黑客使用您的 IP 地址发送电子邮件?
- c++ - 这是返回指向映射中值的指针的有效方法吗?
- python - 在python中将数据保存在excel文件中的问题
- node.js - 在 webpack 包中包含一个配置文件
- linux-kernel - 性能计数器和 IMC 计数器不匹配