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“。
发布于 2013-10-09 15:27:36
我修复了您的代码中的一些问题:
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的情况下执行逻辑仍然面临挑战:)。祝好运。
发布于 2013-10-09 15:30:17
如果您执行数字,它们是使用递归实现此操作的一种更简单的方法:
function divide(num,denom) {
if (num < denom) return 0;
return (1 + divide(num - denom, denom));
}对于负数,如果数字小于0,则必须将其扩展以跟踪。此外,虽然简洁和整洁,这细分为大分子和小分母,因为最大调用堆栈大小将超过。
发布于 2013-10-09 15:32:41
我相信你的问题与你的时间循环有关。如果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>https://stackoverflow.com/questions/19276044
复制相似问题