yangyuhan12138 最近的时间轴更新
yangyuhan12138

yangyuhan12138

V2EX 第 306391 号会员,加入于 2018-04-06 14:30:50 +08:00
oracle 1000 的阶乘 最后输出字符串
程序员  •  yangyuhan12138  •  26 天前  •  最后回复来自 yangyuhan12138
19
公有云产品询价
问与答  •  yangyuhan12138  •  2021-11-06 12:43:54 PM
员工内购 长虹&腾讯投影仪
二手交易  •  yangyuhan12138  •  2021-01-27 11:42:44 AM  •  最后回复来自 yangyuhan12138
1
你们在 mac 使用应用程序是喜欢全屏还是非全屏
macOS  •  yangyuhan12138  •  2020-11-17 21:16:22 PM  •  最后回复来自 RioDoubleD
38
内核态用户态的数据拷贝,有点不明白
程序员  •  yangyuhan12138  •  2020-07-06 13:43:51 PM  •  最后回复来自 yannxia
47
tomcat 数据库连接池拿不到连接
程序员  •  yangyuhan12138  •  2020-07-04 15:07:04 PM  •  最后回复来自 yangyuhan12138
4
求一个定时取消订单的解决方案
  •  1   
    程序员  •  yangyuhan12138  •  2020-05-08 12:22:17 PM  •  最后回复来自 changdy
    90
    es 配置问题,很慢很慢
    程序员  •  yangyuhan12138  •  2020-04-24 12:42:04 PM  •  最后回复来自 yangyuhan12138
    19
    yangyuhan12138 最近回复了
    26 天前
    回复了 yangyuhan12138 创建的主题 程序员 oracle 1000 的阶乘 最后输出字符串
    所以最后我还是自己实现了一下


    create or replace function multiply(num1 varchar2, num2 varchar2) return varchar2 as
    TYPE number_array IS VARRAY(4000) OF number;
    temp_array number_array;
    len1 number;
    len2 number;
    p1 number;
    p2 number;
    mul number;
    ss number;
    final_result varchar2(4000);
    begin
    temp_array := number_array();
    len1 := length(num1);
    len2 := length(num2);

    temp_array.extend(len1 + len2);
    FOR i IN 1..temp_array.count
    LOOP
    temp_array(i) := 0;
    END LOOP;
    -- Loop through the digits of the first number
    FOR i IN REVERSE 1..len1
    LOOP
    -- Loop through the digits of the second number
    FOR j IN REVERSE 1..len2
    LOOP
    mul := TO_NUMBER(SUBSTR(num1, i, 1)) * TO_NUMBER(SUBSTR(num2, j, 1));
    p1 := i + j - 1;
    p2 := i + j;
    ss := mul + temp_array(p2);
    temp_array(p1) := temp_array(p1) + floor(ss / 10);
    temp_array(p2) := mod(ss, 10);
    end loop;
    end loop;

    FOR i IN 1..temp_array.count
    LOOP
    if temp_array(i) = 0 and length(final_result) is null
    then
    continue ;
    end if;
    final_result := final_result|| temp_array(i);
    END LOOP;

    return final_result;
    end;

    create or replace function factorial(n number) return varchar2 as
    result varchar2(32767) := '1';
    begin
    for i in 1..n
    loop
    result := multiply(result, to_char(i));
    end loop;
    return result;
    end;

    select factorial(1000)
    from DUAL;
    26 天前
    回复了 yangyuhan12138 创建的主题 程序员 oracle 1000 的阶乘 最后输出字符串
    思路是有的 但是公司要求用 Oracle 来解决,但是我不熟悉 Oracle 所以才来看看能不能直接捞到答案..
    27 天前
    回复了 yangyuhan12138 创建的主题 程序员 oracle 1000 的阶乘 最后输出字符串
    @Alias4ck 好像不用加
    27 天前
    回复了 yangyuhan12138 创建的主题 程序员 oracle 1000 的阶乘 最后输出字符串
    @Alias4ck 当然试过了 结果是 2500 多位 我测试的结果 图片连接 s2.loli.net/2023/01/11/Ji1UHwWPerhBauQ.png 前边加 https:// number 不可能存的下
    27 天前
    回复了 yangyuhan12138 创建的主题 程序员 oracle 1000 的阶乘 最后输出字符串
    @cccer 确实 正经人谁会这样写,但是因为这个是 我朋友公司 转正需要走做的考题...就是要用 plsql 写 ,主要看他的熟练程度 以及思维
    test 1
    28 天前
    回复了 yangyuhan12138 创建的主题 程序员 oracle 1000 的阶乘 最后输出字符串
    @Alias4ck 数据会十分的大 不可能用简单的乘法 只能按位相乘再相加 并且使用字符串储存结果
    28 天前
    回复了 yangyuhan12138 创建的主题 程序员 oracle 1000 的阶乘 最后输出字符串
    @falsemask Java 我就没那么难受了 oracle 这边语法不熟悉 主要是
    @stormynight 确实 更新到最新版就有了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   2186 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 00:23 · PVG 08:23 · LAX 16:23 · JFK 19:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.