function subtraction(num1, num2){
var num3;
num3 = num1 - num2;
document.writeln("Difference "+ num3);
return (num3);
}
function division(num1, num2){
difference = parseFloat(subtraction());
var x;
while(difference > 0){
difference = num1-num2;
x = x + 1;
}
document.writeln("Quotient" + x);
}
嗨!我想做一个除法功能,但问题是我不会使用“/”。这是我得到的,到目前为止,这打印出“未定义”,如果我说x = 0,它将打印出“0”。
答案 0 :(得分:0)
我修复了代码的一些问题:
function division(num1, num2){
var difference = num1-num2; // difference is now a local variable
var x = 0; // x should be initialized
while(difference > 0){
difference = difference-num2; // difference should change, not always be num1-num2
x = x + 1;
}
console.log("Quotient" + x);
console.log("Remainder" + (difference+num2));
}
http://jsbin.com/UQIqejo/1/edit
算法本身仍然存在一些问题,因为num2小于或等于0将导致无限循环,但我希望找到这些问题是乐趣的一部分。
编辑:相同代码的较小版本:
function divisionSmall(a,b) {
var x = 0;
while ((a-=b) > 0) x++;
console.log('Quotient', x);
console.log('Remainder', a+b);
}
EDIT2:正确的分工:
function divisionSmall(a,b) {
var x = 0;
while ((a-=b) > 0) x++;
return [x, a+b];
}
function divisionCorrect(a,b) {
var ans;
if (b === 0) return ['INF', 0];
if ((a > 0) && (b > 0)) {
return divisionSmall(a,b);
}
if ((a > 0) && (b < 0)) {
ans = divisionSmall(a,-b);
return [-ans[0], ans[1]];
}
if ((a < 0) && (b > 0)) {
ans = divisionSmall(-a,b);
return [-ans[0] - 1, b-ans[1]];
}
if ((a < 0) && (b < 0)) {
ans = divisionSmall(-a,-b);
return [ans[0] + 1, -b-ans[1]];
}
}
console.log(divisionCorrect(11,3)); // 3, 2
console.log(divisionCorrect(11,-3)); // -3, 2
console.log(divisionCorrect(-11,3)); // -4, 1
console.log(divisionCorrect(-11,-3)); // 4, 1
在没有if
s :)的情况下执行逻辑仍然存在挑战。祝你好运。
答案 1 :(得分:0)
如果您使用递归操作数字是一种更简单的方法:
function divide(num,denom) {
if (num < denom) return 0;
return (1 + divide(num - denom, denom));
}
对于负数,你必须扩展它以跟踪数字是否小于0.此外,虽然简洁而整洁,但由于最大调用堆栈大小将超过大分子和小分母,这会分解。
答案 2 :(得分:0)
我相信你的问题在于你的while循环。如果subtraction
方法返回负数,则无法计算。
用户Math.abs
获取绝对值。
<script>
function division(num1, num2){
var difference = Math.abs(parseFloat(subtraction(num1, num2)));
var x = 0;
while(difference > 0){
difference = difference-num2;
x = x + 1;
}
document.writeln("Quotient" + x);
}
function subtraction(num1, num2){
var num3;
num3 = num1 - num2;
document.writeln("Difference "+ num3); return (num3);
}
</script>