精华内容
下载资源
问答
  • 使用递归运算阶乘

    2021-05-11 15:06:04
    public class Factorial { public static void main(String[] args) { System.out.println(f(10)); } public static int f(int n) { if (n == 1) { return 1; } return n * f(n - 1);...}
    public class Factorial {
        public static void main(String[] args) {
            System.out.println(f(10));
        }
    
        public static int f(int n) {
            if (n == 1) {
                return 1;
            }
            return n * f(n - 1);
        }
    }
    
    
    展开全文
  • 好吧,我想我已经有了解决方案.这些数字与你的数字有点不同,但我相当确定我的...必须使用递归语句(recur_sql)完成3和4.with main_sql as (select a.*,b.*,sum(a_amt) over (partition by b_id) as cd_amt,rank() over...

    好吧,我想我已经有了解决方案.这些数字与你的数字有点不同,但我相当确定我的正在做你想要的.我们可以在第1步和第1步中完成所有工作. 2使用单个查询(main_sql).必须使用递归语句(recur_sql)完成3和4.

    with main_sql as (

    select a.*,

    b.*,

    sum(a_amt) over (partition by b_id) as cd_amt,

    rank() over (partition by a_cd order by b_id) as rnk

    from (select a_cd, a_flag, sum(a_amt) as a_amt

    from tablea

    group by a_cd, a_flag) a,

    tableb b

    where a.a_flag = case when b.b_flag = 'Y' then a.a_flag else b.b_flag end

    order by b_id, a_cd

    ),

    recur_sql (a_cd, b_id, total_amt, cd_amt, resulting_ratio, resulting_amt, rnk) as (

    select m.a_cd,

    m.b_id,

    m.a_amt as total_amt,

    m.cd_amt, m.a_amt / m.cd_amt as resulting_ratio,

    m.a_amt + (m.a_amt / m.cd_amt * m.b_amt) as resulting_amt,

    rnk

    from main_sql m

    where rnk = 1

    union all

    select m.a_cd,

    m.b_id,

    r.resulting_amt as total_amt,

    m.cd_amt,

    r.resulting_amt / m.cd_amt as resulting_ratio,

    r.resulting_amt + (r.resulting_amt / m.cd_amt * m.b_amt) as resulting_amt,

    m.rnk

    from recur_sql r,

    main_sql m

    where m.rnk > 1

    and r.a_cd = m.a_cd

    and m.rnk - 1 = r.rnk

    )

    select a_cd, b_id, total_amt, resulting_ratio, resulting_amt

    from recur_sql

    order by 2, 1

    展开全文
  • java 递归函数

    2021-03-06 18:01:47
    一、递归函数,通俗的说就是函数本身自己调用自己...如:n!=n(n-1)!你定义函数f(n)=nf(n-1)而f(n-1)又是这个定义的函数。。这就是递归二、为什么要用递归递归的目的是简化程序设计,使程序易读三、递归的弊端:尽管...

    一、递归函数,通俗的说就是函数本身自己调用自己...

    如:n!=n(n-1)!

    你定义函数f(n)=nf(n-1)

    而f(n-1)又是这个定义的函数。。这就是递归

    二、为什么要用递归:递归的目的是简化程序设计,使程序易读

    三、递归的弊端:尽管非递归函数效率高,但较难编程,可读性较差。递归函数的缺点是添加了系统开销,也就是说,每递归一次,栈内存就多占用一截

    四、递归的条件:需有完毕任务的语句,需满足递归的要求(减小而不是发散)

    五、递归进阶:

    1.用递归算n的阶乘:

    分析:n!=n*(n-1)*(n-2)...*1

    public int dReturn(int n){

    if(n==1){

    return 1;

    }else{

    return n*dReturn(n-1);

    }

    }

    2.用递归函数算出1到n的累加:1+2+3+4+..+n

    public int dReturn(int n){

    if(n==1){

    return 1;

    }else{

    return n+dReturn(n-1);

    }

    }

    3.要求输出一个序列:1,1,2,3,5,8,11......(每个数为前两个数子之和,要求用递归函数)

    用java递归来表示一个函数:F(n)=F(n-1)+F(n-2);F(0)=1;F(1)=1;

    分析:X1=1; X2=1; X3=X1+X2; X4=X2+X3; ... ; Xn=X(n-1)+X(n-2)

    public int F(int n){

    if(n==1){

    return 1;

    }else if(n==2){

    return 1;

    }else{

    return F(n-1)+F(n-2);

    }

    }

    4.java用递归方法反向打印一个整数数组中的各个元素

    public static void  printAll(int index,int[] arr){

    System.out.println(arr[index]);

    if(index > 0){

    printAll(--index,arr);

    }

    }

    public static void main(String[] args){

    int[] arr={1,2,3,4,5};

    printAll(arr.lenth-1,arr);

    }

    5.编程求解:若一头小母牛,从出生起第四个年头開始每年生一头母牛,按次规律,第 n 年时有多少头母牛?

    public static int cattle(int n){

    if(n<=0){

    return 0;

    }else if(n<=3){

    return 1;

    }else{

    return cattle(n-1)+cattle(n-3);

    }

    }

    public static void main(String[] args){

    int n=10;

    System.out.println(n+"年后共同拥有"+cattle(n)+"头牛");

    }

    递归、线性递归、尾递归的概念?

    展开全文
  • 我很难找到一种解决方案,可以将一些数据ETL到结果表中。...与许多DP算法一样,可以通过缓存每个结果并用于计算下一个迭代来使用过程解决方案来改进递归解决方案。我建议创建一个综合数据集,看看哪种方法更快。

    我很难找到一种解决方案,可以将一些数据ETL到结果表中。我认为我无法使用纯SQL来完成此操作,并且由于循环需要使用PL-SQL。 sql专家可以帮助我朝正确的方向发展还是提供一些解决此问题的指针?

    这是场景:

    表格:TABLEA和TABLEB。

    脚步:

    通过A_CD对TABLEA中的记录进行分组,并对A_AMT FIELD求和。 (假设A_FLAG对于任何A_CD总是相同的。)让我们将分组结果集称为TABLEA_GRP(这不是表,而是分组查询)。

    从TABLEB中选择一行,如果B_FLG为'N',则在TABLEA_GRP中选择所有行,其中A_FLG为'N'。如果B_FLG为'Y',则选择TABLEA_GRP中的所有行。

    从第2步中选择的行的第一条记录开始,计算所选行的TOTAL_AMT与SUM之和为TOTAL_AMT的比率。将比率乘以B_AMT,然后将所得金额添加到TOTAL_AMT行中,并存储在RESULTING_AMT中。对在步骤2中选择的所有行重复此计算。

    重复步骤2和3,现在使用从相同A_CD的先前计算得出的RESULTING_AMT值开始的TOTAL_AMT VALUE。

    RESULTING _RATIO字段无需保存,仅用于演示目的。你会怎么做?

    基本上我想从TABLEA和TABLEB获取RESULTING_TABLE中的数据

    有人可以帮忙吗?预先非常感谢您提供任何指导。

    7032bc66d4cbe4f75375c7e8f51acf3a.png

    编辑:我添加了A_DATE和B_DATE以支持两个表之间的连接。为简单起见,您可以执行A.A_DATE = B.B_DATE,例如以下基本联接:

    SELECT

    A.A_CD,

    SUM(A.A_AMT) AS TOTAL_AMT,

    A.A_FLAG,

    A.A_DATE,

    B.B_ID,

    B.B_AMT,

    B.B_FLAG

    FROM

    TABLEA A

    JOIN TABLEB B

    ON A.A_DATE = B.B_DATE

    GROUP BY

    A.A_CD,

    A.A_FLAG,

    A.A_DATE,

    B.B_ID,

    B.B_AMT,

    B.B_FLAG

    ;

    1d0aac679dd1a9c0e4fd4b369708b3fb.png

    只是为了澄清一下:我是否正确理解步骤2? 我的步骤2的结果:sqlfiddle.com/#!4/c7670/2/0

    谢谢回复! 是的,您的理解是正确的。

    好的,您在第3步中将哪一行称为"第一"和"选定"?

    已选择:结果-如果B_FLG为N,则选择TABLEA_GRP中的所有行,其中A_FLG为N。如果B_FLG为Y,则选择TABLEA_GRP中的所有行。 第一:选定的第一行。

    好吧,我想我已经找到了解决方案。 这些数字与您的数字有些不同,但是我很确定我在做什么。 我们可以使用单个查询(main_sql)完成步骤1和2中的所有操作。 3和4必须使用递归语句(recur_sql)完成。

    WITH main_sql AS (

    SELECT  a.*,

    b.*,

    SUM(a_amt) OVER (partition BY b_id) AS cd_amt,

    rank() OVER (partition BY a_cd ORDER BY b_id) AS rnk

    FROM   (SELECT a_cd, a_flag, SUM(a_amt) AS a_amt

    FROM   tablea

    GROUP  BY a_cd, a_flag) a,

    tableb b

    WHERE   a.a_flag = CASE WHEN b.b_flag = 'Y' THEN a.a_flag ELSE b.b_flag END

    ORDER BY b_id, a_cd

    ),

    recur_sql (a_cd, b_id, total_amt, cd_amt, resulting_ratio, resulting_amt, rnk) AS (

    SELECT m.a_cd,

    m.b_id,

    m.a_amt AS total_amt,

    m.cd_amt, m.a_amt / m.cd_amt AS resulting_ratio,

    m.a_amt + (m.a_amt / m.cd_amt * m.b_amt) AS resulting_amt,

    rnk

    FROM   main_sql m

    WHERE  rnk = 1

    UNION ALL

    SELECT m.a_cd,

    m.b_id,

    r.resulting_amt AS total_amt,

    m.cd_amt,

    r.resulting_amt / m.cd_amt AS resulting_ratio,

    r.resulting_amt + (r.resulting_amt / m.cd_amt * m.b_amt) AS resulting_amt,

    m.rnk

    FROM recur_sql r,

    main_sql m

    WHERE m.rnk > 1

    AND   r.a_cd = m.a_cd

    AND   m.rnk - 1 = r.rnk

    )

    SELECT a_cd, b_id, total_amt, resulting_ratio, resulting_amt

    FROM   recur_sql

    ORDER BY 2, 1

    f653ffcdb28ddc0a833014876f698d2b.png

    非常感谢!正是我所需要的。感激您花费的时间。

    但是,有一个问题-当TABLEA中有几百万行时,此解决方案是否比在具有游标的存储过程中进行处理更有效?由于我还没有原始数据,因此无法测试。

    计算中的一种错字:RESULTING_RATIO基于分母中的TOTAL_AMT总和。因此,任何B_ID组的RESULTING_RATIO总和为1。在当前解决方案中,它仅考虑main_sql中占总数的比率。

    我不太确定您还将如何计算result_ratio值。您可以发布正在使用的PL / SQL代码吗?在性能方面,很难说。这实际上取决于SQL引擎如何处理这种递归。我上面的代码本质上是仅使用SQL的动态编程。与许多DP算法一样,可以通过缓存每个结果并用于计算下一个迭代来使用过程解决方案来改进递归解决方案。我建议创建一个综合数据集,看看哪种方法更快。

    展开全文
  • 递归乘法

    2021-02-27 15:11:18
    面试题 08.05. 递归乘法 难度中等37 ...为了不使用*完成乘法运算,很容易想到移位操作(左移1位相当于乘2),对于A >> 1相当于除2,B<< 1相当于乘2,这样保证AB乘的结果不变,需要注意的是
  • ForkJoinPool与递归

    2021-06-07 16:23:24
    1.ForkJoinPool进行文件夹所有文件的记录 static class MyRecursiveTask extends ... } main方法执行比较下时间如下,相同的文件目录,该目录下的文件数目为 556个文件的文件夹的递归遍历是比采用ForkJoinPool快速的
  • 他能将大任务拆分成小任务进行运算,最后将结果合并。其原理如下所示: 有什么特点 具有工作窃取的特点。 什么是工作窃取呢? 假设存在A和B两个线程。 当A线程执行到此处时,B线程已经执行完毕。 此时的B线程...
  • 递归是一种算法结构,DFS是一种搜索(方法)工具,回溯是一种算法思想。 1.在函数中调用函数本身来解决子问题以达到解决原问题的方法就叫递归 对于一个可以分解的问题,子问题与原问题处理过程完全相同,区别只在于...
  • 详解C语言函数篇 + 递归原理

    多人点赞 热门讨论 2021-07-24 20:47:47
    目录 前言 函数定义 函数定义的另外一种写法 函数具体使用 return语句 函数声明 函数的参数,值传递与址传递 函数递归 解题思路 递归原理图 总结 前言 函数是什么,在我们初识C语言的时候,开始独立编写自己的一个...
  • 斐波那契数列:1 1 2 3 5 8 13 21 34 55 …fb(n) :1 n <= 2fb(n-1) + fb(n-2) n...}}使用递归需进行,如果递归的深度并不是很深,便可以使用。递归的子问题一定要有解。(即递归一定要有回归条件。)递归有两个过程...
  • //作用是取走一个字符(在这里是加减符号) //项之间的运算 if(c=='+'){ result+=term_value(); } else result-=term_value(); //再次看一个字符,回到循环判断 c=cin.peek(); } return result; } //计算项的值,...
  • 对串求逆的递归算法

    2021-06-13 02:20:41
    #对串求逆的递归算法 题目 对字符串 “ABCDE” 进行逆向输出,输出为 “EDCBA”。 #include <iostream> #include <string> std::string ReverseString(std::string s) { std::string s1; if(s.length...
  • //调用自身,体现递归思想 statements2;//等待被执行的语句2 } 分析:这里用分层思想更便于理解,首先执行statement1语句,然后判断是否符合test条件,如果符合,进入下一层recurs()调用,直到判断不符合条件...
  • Java 方法的使用(方法重载、形参和实参调用关系、方法递归)前言一、方法重载二、实参和形参的传递三、方法递归 前言 提示: 本文介绍了方法的三种实际的使用 方法重载、实参与形参传递的形式(有画内存图)方法...
  • tip:面试中遇到能否优化递归算法的问题,简要回答了递归算法,动态规划以及时间和空间的优化,再问到能否使用矩阵运算时有点懵,网上查了一下矩阵的快速幂运算算法,记录一下。 问题描述:在一个n阶的台阶,一次...
  • 递归思路解决的四则运算问题,C语言网上很多解决四则运算的算法都是基于栈的思想的(数据结构一书中也是使用了栈),我想了一下,使用递归的方法解决起来很清晰的思路首先,不论多少复杂的四则运算,都是由若干的像1+2...
  • 例如:1729——1+7+2+9=19 ... //利用递归把右边那位拿出来相加 } else { return num; } } int main() { unsigned int num = 0; scanf("%d", &num); int ret = DigitSum(num); printf
  • 三目运算&递归

    2021-12-03 11:12:02
    标题三目运算+递归求最大公约数(绝了) 先强调一下三目(条件)运算的规则: 对于条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的...
  • 最终,通过上面三个方法的递归调用,将表达式解析为n条只包含一个运算符号的表达式。 计算时,循环遍历解析结果,进行变量的替换,将每一步的结果都放入变量的map中,后续的计算会用到。最后一个表达式的结果,就是...
  • 设计求一棵二叉树T的结点个数,使用递归的方法 int NodeCount(BiTree *T) { int inum,rnum; if(T==NULL)//空树返回0 return 0; else { inum=NodeCount(T->lchild);//求左子树的节点个数 rnum=NodeCount(T->...
  • 通过递归的方法实现简单表达式的运算,支持加减乘除以及多层括号运算。//eval.h////eval.h#if !defined(__EVAL__H__)#define __EVAL__H__// evaluate the value of the str.// It support +-*/ with non-nagetive ...
  • Java中使用递归计算1+2+3+…+N的值 public class Test2 { public static void main(String[] args) { System.out.println(sum(N)); } // 求加值的方法 public static int sum (int m) { if (m == 1) { ...
  • 设一棵二叉树以二叉链表表示,试以成员函数形式编写有关二叉树的递归算法:
  • 蝶形算法可参考链接 代码如下: #include<iostream> #include<complex.h> #include<math.h>...#define PI 3.14159 ...#define STAGE ((int)(log(N)/log(2))) ...void FFT(data_t Xin[N],data_t Xout[N]
  • 目录 N皇后问题 数据范围 分析 C++代码(递归回溯法) 非递归回溯法 C++代码(非递归回溯法) 使用位运算求解N皇后问题 位运算求解N皇后代码 N皇后问题 n−皇后问题是指将 n 个皇后放在 n×n 的国际象棋棋盘上,...
  • 【幂律运算】设a为一给定实数,直接根据幂律运算的数学定义计算an (n为自然数)的方法属于蛮力算法,此时需要对a执行(n−1)次基本乘法运算,故蛮力算法的计算时间复杂度为O(n)。请重新设计一个算法,要求该算法的计算...
  • package day1_12; public class Demo02 { ... //想实现多少内的递归加法运算,更改数就好 System.out.println("1-100的总和为:"+DiGuiAdd(100)); } //自定义一个递归函数 public static int DiGuiAdd(int
  • 递归运算法

    2021-06-27 04:18:06
    中文名递归运算法外文名Recursive Arithmetic递归运算法摘要编辑语音图片递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写程序能使程序变得简洁和清晰。。递归算法是把问...
  • 如果不加以优化的话,递归很容易出现重复计算的问题。比如前面计算斐波那契数列,根据公式有F(n)= F(n-1)+F(n-2)。这意味着为了计算F(8),必须计算F(7)和F(6)。而为了计算F(7),必须计算F(6)和F(5),......。这里F(6...
  • 递归阶乘详解

    2021-01-30 21:33:18
    递归阶乘 什么是递归? 直接递归:方法自身调用自己,当满足一定条件时跳出。以编程的角度来看,递归指的是方法定义中调用方法本身的现象 间接递归:A方法调用B方法,B方法调用C方法,C方法再调用A方法 递归为什么...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 148,029
精华内容 59,211
关键字:

递归运算