【减治法】俄式乘法及C++代码实现

来源:互联网 发布:吸毒到底有多恐怖 知乎 编辑:程序博客网 时间:2024/04/29 12:25

一、算法原理

俄式乘法,又被称为俄国农夫法,它是对两个正整数相乘的非主流算法。假设m和n是两个正整数,我们要计算它们的积。它的主要原理如下:

①当n为偶数时:

n * m=n/2 * 2m

②当n为奇数时:

n * m=(n-1)/2 * 2m + m

并以1*m=m作为结束条件。

n*m步骤如下:

这里写图片描述

sum=130+1040+2080=3205

二、代码实现

#include <iostream>  using namespace std; int main()  {      int russia(int x,int y);      int n,m;      cin>>n>>m ;    cout<<russia(n,m)<<endl;      return 0;  }  int russia(int x,int y)  {      if(x==1)      {             return y;      }      if(x%2!=0)      {             return russia((x-1)/2,y*2)+y;      }      else return russia(x/2,y*2);  }  
原创粉丝点击