我想以ABCD格式打印所有四位数字,使得A + B = C + D(称为“快乐数字”),带有三个嵌套循环。这是原始代码:
for (let a = 1; a <= 9; a++)
for (let b = 0; b <= 9; b++)
for (let c = 0; c <= 9; c++)
for (let d = 0; d <= 9; d++)
if (a + b == c + d)
console.log('${a}${b}${c}${d}');
我尝试这样做:
for (let a = 1; a <= 9; a++)
for (let b = 0; b <= 9; b++)
for (let c = 0,d=0; c <= 9,d <= 9; c++,d++)
if (a + b == c + d)
console.log('${a}${b}${c}${d}');
但是控制台没有打印所有“快乐号码”。第一个是:9687,9696,9779,第二个:7144,7355。我的错误在哪里?
答案 0 :(得分:1)
for (let a = 1; a <= 9; a++)
for (let b = 0; b <= 9; b++)
for (let c = 0; c <= 9; c++) {
const d = a + b - c;
if (d >= 0 && d <= 9) console.log(`${a}${b}${c}${d}`);
}
拥有d
,a
和b
后, c
是唯一的,因此您只需要计算它。
答案 1 :(得分:0)
错误在于:
for (let c = 0,d=0; c <= 9,d <= 9; c++,d++)
使用此代码,c和d将在同一时间递增。所以你的第二个代码只会打印最后2位数字相同的快乐数字(如7144和7355)。
我不明白你为什么要使用3个循环...你可以在一个循环中轻松完成这个:
for(let i = 1000; i < 10000; i++)
{
if(/* test if i is happy here */)
console.log(i);
}
答案 2 :(得分:0)
在一个循环中.....
customer.order*.orderNumber
如果你坚持3循环:
for (int i=1001;i<=9999;i++){
if(i/1000+(i/100)%10 == (i/10)%10+i%10)System.out.println("happy Number"+i);
}