1 problem description
First, what is the Russian multiplication? Here, the third edition of the basics of algorithmic design and analysis is described in the text:
2 Solutions
The specific code is as follows:
Packagecom.liuzhen.chapter4; Public classRussianpeasant {//Method 1: Recursive solution Public voidRecursionrussian (intMintNintresult) { if(M < 1) return; if(M = = 1) System.out.println ("Use recursion to get m*n results:" + (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); } } //Method 2: Iterative solving Public intIterationrussian (intMintN) { intresult = 0; while(M > 0){ if(m% 2 = = 0) {m= M/2; N= N*2; } Else{result+=N; M= (m-1)/2; N= N*2; } } returnresult; } Public Static voidMain (string[] args) {russianpeasant test=Newrussianpeasant (); Test.recursionrussian (50, 65, 0); System.out.println ("Using iterations to extract m*n results:" +test.iterationrussian (50, 65)); }}
Operation Result:
Using recursion to get m*n results: 3250 using iterations to extract m*n results: 3250
Algorithmic note _027: Russian multiplication (Java)