zoukankan      html  css  js  c++  java
  • 冒泡算法和递归算法demo

      package com.kindess.springbootswager.controller;

      import java.util.ArrayList;

      import java.util.Collections;

      import java.util.List;

      /**

      * @author kindess

      * @description 测试demo

      */

      public class Test {

      /**

      * 递归算法

      *

      * @param num

      * @return

      */

      public static int countNum(int num) {

      //求和:1+2+...+num

      /* if (num > 0) {

      return num + countNum(num - 1);

      }

      return 0;*/

      //阶乘:1*2*...+num

      if (num <= 1) {

      return 1;

      }

      return num * countNum(num - 1);

      }

      /**

      * 题意:一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。

      * 这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?

      *

      * 算法步骤:

      * 1) 令num等于2,n等于7;

      * 2) 计算前一天的总鸭子数量num = (num + 1) * 2;

      * 3) 计算并输出第n天卖掉的鸭子数量;

      * 4) 将n减去1,判断n是否大于0,若是,则输出总鸭子数量num,否则,递归调用函数继续进行计算。

      *

      * @param num 最后一天剩余的鸭子的数量

      * @param counter 村庄的个数

      * @return

      */

      public static int duck_sale(int num, int counter) {

      num = (num + 1) * 2;

      System.out.println("第" + counter + "个村子卖出的鸭子的数量是:" + (num / 2 - 1));

      //计数器减1

      counter--;

      if (counter > 0) {

      //说明前面鸭子没卖完 递归调用方法 算出该村子卖出的鸭子的数量

      duck_sale(num, counter);

      } else {

      //说明鸭子卖完了

      System.out.println("鸭子的总数是:" + num);

      }

      return num;

      }

      /***

      * 角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。

      * 求经过多少次可得到自然数1。

      * 如:输入22,

      * 输出 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

      * STEP=16

      *

      * 算法步骤:

      * 1)定义计数器counter=0 输入自然数的值

      * 2)判断n 是否为偶数,若是,则n=n/2 若不是,则n=n*3+1

      * 3)判断n是否等于1 若是,则输出counter,若不是继续 调用jiaogu()

      *郑州看妇科的医院 http://www.ytsgfk120.com/

      * @param n 输入的自然数 所要求的数值

      * @param counter 输出最后结果所需要的调用几次

      * @return

      */

      public static int jiaogu(int n, int counter) {

      //这个计数器不可以在这里赋值的,这样每一次调用方法进来之后,都会重置counter的值

      //int counter = 1;

      if (n == 1) {

      return 1;

      } else {

      //计数器+1

      counter++;

      if (n % 2 == 0) {

      n = n / 2;

      } else {

      n = n * 3 + 1;

      }

      System.out.println("输出当前自然数的值是:" + n);

      //递归调用

      jiaogu(n, counter);

      }

      return counter;

      }

      public static void main(String[] args) {

      System.err.println("地归阶乘:" + countNum(5));

      System.err.println("递归案例:" + duck_sale(2, 2));

      System.err.println("角谷定理案例:" + jiaogu(3, 3));

      System.err.println("********************冒泡排序****************");

      int[] arr = {5, 12, 58, 98, 2, 1, 5, 36, 0};

      //外层循环控制循环趟数

      for (int i = 1; i < arr.length; i++) {

      //内层循环控制每一趟排序多少次

      for (int j = 0; j < arr.length - i; j++) {

      //控制排序结果,小于就是降序,大于就是升序

      if (arr[j] > arr[j + 1]) {

      int t = arr[j];

      arr[j] = arr[j + 1];

      arr[j + 1] = t;

      }

      }

      }

      System.out.println("输出升序后的数组:");

      for (int i = 0; i < arr.length; i++) {

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

      }

      System.err.println("********************集合排序****************");

      List list = new ArrayList();

      list.add(10);

      list.add(40);

      list.add(30);

      list.add(20);

      list.add(11);

      //list.sort(Integer::compareTo);

      Collections.sort(list);

      System.err.println(list);

      }

      }

      标题

  • 相关阅读:
    Python3---filter,map,reduce
    老男孩-day2作业-计算器
    Python 简易购物系统--老男孩作业
    老男孩-day1作业二
    老男孩-day1作业一
    Axure8.0图片旋转注意
    CentOS6.5部署KVM及实现在线迁移
    CentOS 6.5 安装部署iSCSi共享存储
    CentOS 6.5 安装部署KVM
    CentOS6.5部署L2TP over IPSec
  • 原文地址:https://www.cnblogs.com/djw12333/p/12101683.html
Copyright © 2011-2022 走看看