1 问题描述

首先,了解一下何为俄式乘法?此处,借用《算法设计与分析基础》第三版上一段文字介绍:

2 解决方案

package com.liuzhen.chapter4;

public class RussianPeasant {
//方法1:递归求解
public void recursionRussian(int m,int n,int result){
if(m < 1)
return;
if(m == 1)
System.out.println("使用递归求取m*n结果: "+(result+n));
if(m % 2 == 0){
m = m/2;
n = n*2;
recursionRussian(m,n,result);
}
else{
result += n;
m = (m-1)/2;
n = n*2;
recursionRussian(m,n,result);
}
} //方法2:迭代求解
public int iterationRussian(int m,int n){
int result = 0;
while(m > 0){
if(m % 2 == 0){
m = m/2;
n = n*2;
}
else{
result += n;
m = (m-1)/2;
n = n*2;
}
}
return result;
} public static void main(String[] args){
RussianPeasant test = new RussianPeasant();
test.recursionRussian(50, 65, 0);
System.out.println("使用迭代求取m*n结果:"+test.iterationRussian(50, 65));
}
}

运行结果:

使用递归求取m*n结果: 3250
使用迭代求取m*n结果:3250

Java实现俄式乘法的更多相关文章

  1. 算法笔记_027:俄式乘法(Java)

    1 问题描述 首先,了解一下何为俄式乘法?此处,借用<算法设计与分析基础>第三版上一段文字介绍: 2 解决方案 具体编码如下: package com.liuzhen.chapter4; ...

  2. Java打印九九乘法表

    package com.czgo; /** * 九九乘法表 * * @author AlanLee * */ public class Print99 { public static void mai ...

  3. JAVA 打印九九乘法表

    /** *  * @author liangxiaoyu * @version 1.0 *2015-09-18 */public class JJ { public static void main( ...

  4. Java实现九九乘法表的输出

    九九乘法表一般为三角形,每个数分别和从1到自身的数相乘然后把结果列出来,即要用到两层循环,外层是从1到9for(i=1;i<=9;i++),内层是当前数和从1到自身相乘for(j=1;j< ...

  5. java输出九九乘法口诀表

    使用双重for循环输出九九乘法口诀表 public static void main(String[] args){ formula();} /** * for 循环实现9*9乘法口诀表 * &quo ...

  6. java 加法变乘法

    加法变乘法 我们都知道:1+2+3+ - + 49 = 1225 (1) 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+...+10*11+12+...+27*28 ...

  7. Java实现填写乘法算式

    观察下面的算式: * * × * * = * * * 它表示:两个两位数字相乘,结果是3位数.其中的星号(*)代表任意的数字,可以相同,也可以不同,只要不是在首位的就可以是0.当然,满足这个要求的算式 ...

  8. Java打印九九乘法表及倒打九九乘法表

    //正打 public class Test3 { public static void main(String[] args) { for(int j=1;j<10;j++){ for(int ...

  9. java实现九九乘法表

    public class Demo { public static void main(String[] args) { for (int i = 1; i < 10; i++) {      ...

随机推荐

  1. Linux --登录用户显示-bash-4.2#解决办法

    登录linux系统过后,发现显示的是-bash-4.2# 而不是root@主机名 + 路径的显示方式,发生这种情况的原因是根目录下缺失几个配置文件,从默认配置中拷贝过来就可以解决了: 1 cp /et ...

  2. MYsql 8 连接报错 MySQLNonTransientConnectionException: Could not create connection to database server.

    本地安装mysql 是8 项目中数据驱动 也要求是 8 <dependency> <groupId>mysql</groupId> <artifactId&g ...

  3. 基于Nettty打造自己的MVC服务器

    最近开始折腾Netty,体验下NIO编程.既然学习了,就要做点东西出来,要不然不容易掌握学到的东西.在Netty的官方demo上都有各种case的sample,打造Http服务器的核心代码就是从Sam ...

  4. java套打

    1:套打可能是以后软件开发可能会涉及到的功能,主要麻烦地方就是需要精确定位,光是打印发票还好,要是打印那种协议类型的特别麻烦,不仅长而且需要的数据多 ,定位麻烦. 2:而且大多数情况是需要去除页眉页脚 ...

  5. hdu4035 Maze 题解

    /* 设 E[i]表示在结点i处,要走出迷宫所要走的边数的期望. E[i] = ki*E[1] + (1-ki-ei)*E[fa[i]] + (1-ki-ei); E[i] = ki*E[1] + ( ...

  6. 关于Tomcat+Nginx负载均衡与Jmeter服务器测压的日记

    Jmeter测压 1.Jmeter-5.1.1下载:http://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-5.1.1.zip 2 ...

  7. Java Concurrent包初探

    同步容器: Vector/Hashtable:jdk1.0就已经存在,jdk1.2改写实现List/Map接口.作为ArrayList/HashMap在并发场景中的替代类出现.注意:Hashtable ...

  8. JSR303后端校验详细笔记

    目录 JSR303 使用步骤 关于不为空 分组校验 自定义校验 完整代码 JSR303 使用步骤 1.依赖 <!--数据校验--> <dependency> <group ...

  9. JNPF低代码开发框架代码生成器设计

    1.代码生成器目录下有通用开发模板.单表开发模板.多表开发模板.流程表单模板.移动开发模板等: ①代码生成器录下通用开发模板页面,有搜索.上步.下步.下载代码功能操作: ②输入查询条件表名关键字进行搜 ...

  10. Web前端:1、HTML&CSS概述及结构

    万维网联盟(World Wide Web Consortium)简称W3C,专门为了定义网页相关的标准而成立,如网页中的HTML.CSS.DOM.HTTP.XML等标准. 根据W3C标准,一个网页主要 ...