无聊的开始
一道初中数学题888888×333333
其答案是:(888888000000-888888)÷3
推算
888888×333333
888888×999999÷3
888888 x (10000000 - 1) ÷ 3
无聊ing
找规律
然而,我开始找规律之旅
8
3
24
88
33
24
24
24
24
888
333
24
24
24
24
24
24
24
24
24
888
333
[
[24], [24], [24],
[24], [24], [24],
[24], [24], [24],
]
数学归纳法
6位就是六行六列
用程序实现下
实现相同数字,相同位数的乘法。比如:33 * 88 ,22 *99
js代码。chrome 控制台。可执行
// 888888 * 333333
// 8, 3, 6
function repeatNumMul(a, b, c) {
count = 0
total = 0
ab = a*b
for(var i=0;i<c;i++) {
if (i>0) {
t *= 10
} else {
t = 1
}
count = 0
for(var j=0;j<c;j++) {
if (j>0) {
tt *= 10
} else {
tt = 1
}
count += ab*tt;
}
total += count * t
}
return total;
}
用递归
能看出来有规律的。问题包裹着子问题。
// 888888 * 333333
// 8, 3, 6
function repeatNumMul(a, b, c) {
ab = a*b
total = subValue(ab,c,2)
return total;
}
function subValue(ab,c,num) {
if (num==0) {
return ab;
}
count = subValue(ab,c,num-1)
total = 0
for(var i=0;i<c;i++) {
if (i>0) {
t *= 10
} else {
t = 1
}
total += count * t
}
return total
}