Java实现俄式乘法
JAVA 实现 乘法
2023-09-14 08:58:13 时间
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实现 蓝桥杯 算法提高 欧拉函数(数学)
- Java实现 蓝桥杯 算法提高 矩阵乘法(暴力)
- Java实现 LeetCode 732 我的日程安排表 III(暴力 || 二叉树)
- Java实现 LeetCode 576 出界的路径数(DFS || DP)
- Java实现 LeetCode 524 通过删除字母匹配到字典里最长单词(又是一道语文题)
- Java实现 蓝桥杯 算法训练 乘法次数
- Java实现 蓝桥杯 算法训练 乘法次数
- java实现第六届蓝桥杯加法变乘法
- Java实现大整数乘法
- Java实现俄式乘法
- Java实现 蓝桥杯VIP 算法提高 乘法运算
- Java实现 洛谷 Car的旅行路线
- Java实现 蓝桥杯VIP 算法训练 调和数列
- Java实现 蓝桥杯VIP 基础练习 龟兔赛跑预测
- Java实现 蓝桥杯 历届试题 小计算器
- Java实现 蓝桥杯 算法训练 矩阵乘法
- Java实现蓝桥杯历届试题分考场
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- JAVA语言之Java 中不同的并行实现的性能比较
- 【java】Java并发编程--Java实现多线程的4种方式
- 【java】Spring Cloud --Spring Cloud Config 实现配置中心,看这一篇就够了