递归算法

据说凡是可以循环的步骤,都可以递归表示出来。

递归的关键有二点: 1.0 递归公式,即递推式。 2.0 递归出口。


递归求数组的和

package day20180407;
public class Sumarry {
    public static void main(String[] args) {
      int[] arry= {1,2,3,4,5};
      System.out.println("the sum of the arry="+sum(arry,arry.length-1));
    }
    
    static int  sum(int[] arry,int n)
    {
        if(n==0)
        {
            return arry[0];
        }
        else 
        {
          return sum(arry,n-1)+arry[n];
        
        }
        
    }

}

结果是

the sum of the arry=15

求数组的最大数

package day20180407;
public class Maxarry {
     static int count=0;
    public static void main(String[] args) {
    
          int[] arry= {1,2,3,4,5,88,-85,1};
          System.out.println("the max of the arry="+max(arry,arry.length-1));
          System.out.println("count function="+count);
    }
    
    static int max(int[] arry,int n)
    {
       count++;
       if(n==0) 
       {
           return arry[0];
       }
       else
       {
           if(max(arry,n-1)>arry[n])
           return max(arry,n-1);
           else
          return arry[n];
           
       }
        
    }

}

结果是:

the max of the arry=88
count function=27

可以看成这个函数,递归了20多次,你能理解其过程嘛,反正计算机可以。 我感觉递归就像一种哲学。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏申龙斌的程序人生

零基础学编程028:面向对象编程OOP

在《零基础学编程021:获取股票实时行情数据》一节中,我们想获取6支股票的行情数据,在《零基础学编程022:函数的世界》里我们能够把重复性的代码封装为一个函数p...

3126
来自专栏HTML5学堂

算法之旅 | 冒泡排序法

HTML5学堂-码匠:本期继续走入算法 —— 冒泡排序法。冒泡排序算法相对简单,容易上手,稳定性也比较高, 算是一种较好理解的算法,也是面试官高频提问的算法之一...

4109
来自专栏用户2442861的专栏

白话经典算法系列之六 快速排序 快速搞定

原文   http://blog.csdn.net/morewindows/article/details/6684558

1302
来自专栏CDA数据分析师

技能 | 利用SAS进行数据清洗技术——缺失值查询

数据清洗技术是统计分析之前必做的一步,而且也是非常麻烦的一步,有时甚至花费的时间比统计分析都长。所以没有一定的技巧,这将是个非常烦人的工作。本篇文章介绍如何利用...

32110
来自专栏程序员互动联盟

【面试宝典】Java如何打印数组

面试官: 如何打印一个数组? 小白:用for循环。 面试官:如何打印一个List? 小白:用for循环。 面试官:如果打印一个二维数组? 小白:还是for循环。...

3879
来自专栏写代码的海盗

撸起袖子加油干 golang入坑系列

还是提醒一下,里面有段子,不都是技术。 冲着技术来的,慢走不送。没有版权,但可以给我发邮件(ztao8607@gmail.com) 在我的发小朋友中,终于最后一...

2765
来自专栏C语言及其他语言

[每日一题]宏定义

前面题目主要是自定义函数的题,相信经过这些题目的训练,大家对自定义函数的理解想必更近了一步。接下来呢,我们主要来练习跟自定义函数异曲同工的宏定义,先看看下面这题...

3476
来自专栏Java帮帮-微信公众号-技术文章全总结

Java面试系列5

一、是否可以继承String类? String类是final类故不可以继承。 二、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的...

3585
来自专栏雪胖纸的玩蛇日常

4. 高等数学——元素和极限

  假设我们知道了整数的定义,像-3,1,17这些都属于整数Z。然后有理数则是两个整数相除q/p ,q,p属于Z,则是有理数Q。

942
来自专栏一个爱吃西瓜的程序员

每天学习一点儿算法--快速排序

快速排序是一种常用的优雅的排序算法,它使用分而治之的策略。 那么分而治之(D&C)是一种怎样的策略呢? 分而治之 分而治之(D&C)的要点只有两个: 找出简单...

3074

扫码关注云+社区

领取腾讯云代金券