//求阶乘

//数学里面最直接的阶乘定义就是,将这个数n乘以n-1,再乘以n-1-1,一直乘到1,

//所得到的结果就是n的阶乘:n!=n*(n-1)*(n-1)*...*2*1,这里要注意:0!=1

//下面定义一个球阶乘的函数:

create or replace function fun_factorial(num number)

return number

is

result number:=1;

begin

if num<0 then

raise_application_error(-20012,' function parameters can not be less than zero');

elsif num=0 or num=1 then

return 1;

else

for i in 2..num loop

result:=i*result;

end loop;

return result;

end if;

end fun_factorial;

/

SQL> select fun_factorial(5) from dual;

FUN_FACTORIAL(5)

----------------

120

//

SQL> select fun_factorial(6) from dual;

FUN_FACTORIAL(6)

----------------

720

//当我们给阶乘函数传递负数时,我们将得到最初设定的错误

select fun_factorial(-6) from dual

ORA-20012: function parameters can not be less than zero

ORA-06512: at "YEEXUN.FUN_FACTORIAL", line 7

//

//如果有这样的要求呢?

//n!+(n-1)!+(n-2)!+...+2!+1!

//我们该怎么处理呢?

create or replace function fun_sum_of_factorial(n number)

return number

as

results number:=0;

begin

//下面使用nvl(n,5)为了保证用户有输入,如果没有输入数据,默认为5

for i in 1..nvl(n,5)

loop

//这里调用了上面我们创建的fun_factorial函数,求每一个数的阶乘

//然后再将每个数的阶乘相加就能得到结果了

results := results + fun_factorial(i);

end loop;

return results;

exception

when others then

dbms_output.put_line(sqlerrm);

end fun_sum_of_factorial;

/

SQL> select fun_sum_of_factorial(5) from dual;

FUN_SUM_OF_FACTORIAL(5)

-----------------------

153

//

SQL> select fun_sum_of_factorial(50) from dual;

FUN_SUM_OF_FACTORIAL(50)

------------------------

3.10350532295462E64

//

//如果能用一句话写出来那该多好啊!

//

select sum(nm)

from (

select power(2,sum(log(2,level)) over(order by level)) nm

from dual

connect by level<=5)

/

SUM(NM)

----------

153

oracle计算6的阶乘,oracle 求阶乘相关推荐

  1. Java求阶乘和求阶乘之和

    * name:first 功能:1.求阶乘 2.求阶乘之和*/ package exe01;import java.util.Scanner; //输入类 import java.io.Buffere ...

  2. oracle 计算加一年,oracle时间计算不足一年按一年计算怎么做啊?

    2012-12-24 回答 两个date类型字段:start_date,end_date,计算这两个日期的时间差(分别以天,小时,分钟,秒,毫秒): 天: round(to_number(end_da ...

  3. oracle计算每月最小工作日,Oracle计算指定日期内的工作日(不包含周末)

    1.获取当天是礼拜几:select to_char(sysdate,'d') from dual; --礼拜天为1,礼拜一为2,类推 2.获取 两个时间段间的 工作日: select (trunc(& ...

  4. 求n的阶乘和求n的阶乘和——两种方法

    方法一:递归求阶乘+循环求阶乘和 #include<iostream> using namespace std; int main() {int fac(int n);//声明函数int ...

  5. Oracle求5的阶乘,oracle 求阶乘 | 学步园

    //求阶乘 //数学里面最直接的阶乘定义就是,将这个数n乘以n-1,再乘以n-1-1,一直乘到1, //所得到的结果就是n的阶乘:n!=n*(n-1)*(n-1)*...*2*1,这里要注意:0!=1 ...

  6. c语言n位水仙花数简书,Kotlin中函数式编程API(8)求阶乘和计算水仙花数

    求阶乘 计算水仙花数 前面介绍了很多函数,下面两个需求使用前面的函数将变得简单清晰. 一.求阶乘 求阶乘通常会使用递归函数调用,这比较影响性能,可以通过前面介绍的 reduce 函数实现. fun f ...

  7. mysql通过函数完成10的阶乘_请使用函数的递归调用编写求阶乘的函数,并计算1!+2!+3!+4!+5!...

    点击查看请使用函数的递归调用编写求阶乘的函数,并计算1!+2!+3!+4!+5!具体信息 答:include "stdio.h" int fac(int k) { if(k==1) ...

  8. python求阶乘之和_python计算阶乘前n项和

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 知道公式后就很简单了,利用for循环,第几行i+1就等于几,当然python中是 ...

  9. 4. linux调用文件计算阶乘前5项和_【题解循环】1091:求阶乘的和

    1091:求阶乘的和时间限制: 1000 ms    内存限制: 65536 KB [题目描述] 给定正整数n,求不大于n的正整数的阶乘的和(即求1!+2!+3!+...+n!),输出阶乘的和. [输 ...

最新文章

  1. 【python】Series和DataFrame的简单介绍
  2. 关于String字符串的常用操作。(持续更新中)
  3. CodeForces - 1295C Obtain The String(dp预处理+贪心)
  4. 休眠后gpio状态_1.Linux电源管理-休眠与唤醒
  5. 5G毫米波三大自然缺陷
  6. 基于分位数回归的静态CoVaR计算 案例与代码
  7. FreeMarker(一)初识
  8. PyKDL---正运动学和逆运动学
  9. 重庆交通大学计算机科学与技术怎么样,计算机科学与技术 大学实力哪家强?(干货)...
  10. 在阿里云主机上部署Mysql数据库详细教程
  11. PhpSpreadsheet VS Box\Spout读取excel性能对比
  12. 计算机网络之传输层笔记
  13. [附源码]JSP+ssm计算机毕业设计校园征兵及退役复原管理系统16z67【源码、数据库、LW、部署】
  14. Axure设计网页时,需要注意的尺寸设置。
  15. python生日祝福短信_python-定时发送生日邮件祝福
  16. Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915解决办法
  17. 日常记录20210102
  18. 【单调栈】 扶桑号战列舰
  19. 飞鸽传书、freeeim、ipmsg区别联系
  20. 物体跟着鼠标移动旋转

热门文章

  1. WIN10 VS2013 GTX960M NVIDIA显卡驱动和CUDA7.5安装 配置Caffe
  2. Linux无法删除只读文件的解决方案
  3. 计算机基础是公共必修课,计算机公共必修课《大学计算机基础》课程教学大纲.doc...
  4. 计算机软考考试难度大吗?据说是行业唯一的证书,自学还是报班好?
  5. 对于学习率与梯度下降的通俗总结:
  6. 牛客网java_牛客网笔试Java输入输出救命模版
  7. Hive分桶之BUCKET详解
  8. error[E0277]: Rust语言如何print struct内容?
  9. PX4装机教程(七)几种常用的遥控器的使用
  10. COVID-19 Cases Prediction (Regression)