File tree Expand file tree Collapse file tree 2 files changed +54
-0
lines changed
Expand file tree Collapse file tree 2 files changed +54
-0
lines changed Original file line number Diff line number Diff line change 1+ const add = function ( num1 , num2 ) {
2+ let i = num1 . length - 1 ;
3+ let j = num2 . length - 1 ;
4+ let result = '' ;
5+ let carry = 0 ;
6+
7+ while ( i >= 0 || j >= 0 ) {
8+ const sum = Number ( num1 [ i ] || 0 ) + Number ( num2 [ j ] || 0 ) + carry ;
9+
10+ result = `${ sum % 10 } ${ result } ` ;
11+ carry = parseInt ( sum / 10 ) ;
12+
13+ i -- ;
14+ j -- ;
15+ }
16+
17+ if ( carry === 1 ) {
18+ result = `1${ result } ` ;
19+ }
20+
21+ return result ;
22+ }
23+ const multiply = function ( num1 , num2 ) {
24+ let i = num1 . length ;
25+ let j = num2 . length ;
26+ let carry = 0 ;
27+ let zeros = '' ;
28+ const resultArr = [ ] ;
29+
30+ if ( num1 === '0' || num2 === '0' ) return '0' ;
31+
32+ for ( let m = i - 1 ; m >= 0 ; m -- ) {
33+ resultArr [ m ] = '' ;
34+
35+ for ( let n = j - 1 ; n >= 0 ; n -- ) {
36+ const sum = Number ( num1 [ m ] ) * Number ( num2 [ n ] ) + carry ;
37+
38+
39+ resultArr [ m ] = `${ sum % 10 } ${ resultArr [ m ] } ` ;
40+ carry = parseInt ( sum / 10 ) ;
41+ }
42+
43+ if ( carry > 0 ) {
44+ resultArr [ m ] = `${ carry } ${ resultArr [ m ] } ` ;
45+ carry = '' ;
46+ }
47+
48+ resultArr [ m ] += zeros ;
49+ zeros += '0' ;
50+ }
51+
52+ return resultArr . reduce ( ( pre , cur ) => add ( pre , cur ) , '' ) ;
53+ } ;
Original file line number Diff line number Diff line change 1+ 模拟笔算的流程
You can’t perform that action at this time.
0 commit comments