Java 使用单个循环打印菱形数字?
我说的是打印这个图案Java 使用单个循环打印菱形数字?,java,c,for-loop,Java,C,For Loop,我说的是打印这个图案 1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 使用多个for循环非常容易。但我试图用一个for循环来实现它,但没能做到。 可能吗 my code:- StringBuilder sb = new StringBuilder(); for (int i = 1; i <= 8; ++i) {
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
使用多个for循环非常容易。但我试图用一个for循环来实现它,但没能做到。
可能吗
my code:-
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 8; ++i) {
System.out.println(sb.append(i)
+ new StringBuilder(sb).reverse().substring(1));
我的代码:-
StringBuilder sb=新的StringBuilder();
对于(int i=1;i,这里有一种只使用一个循环写出此模式的方法:
class RhombusNumbers{
public static void main(String[] args){
String left = "";
int max = 8;
for(int i = 1; i <= max; i++){
System.out.println(left + i + new StringBuilder(left).reverse().toString());
left+=i;
}
}
}
类菱形{
公共静态void main(字符串[]args){
字符串左=”;
int max=8;
对于(int i=1;i,您可以使用递归来解决它:
class Rhombus {
public static void left(int x) {
if (--x > 0) {
left(x);
System.out.print(x);
}
}
public static void right(int x) {
if (--x > 0) {
System.out.print(x)
right(x);
}
}
public static void main(String[] args) {
for (int i = 1; i <= 3; i++) {
left(i);
System.out.print(i);
right(i);
System.out.println();
}
}
}
菱形类{
左公共静态无效(int x){
如果(--x>0){
左(x);
系统输出打印(x);
}
}
公共静态无效权(int x){
如果(--x>0){
系统输出打印(x)
右(x);
}
}
公共静态void main(字符串[]args){
对于(inti=1;i,使用以下事实:
1*1 = 1
11*11 = 121
111*111= 12321
....
您可以这样做:
public static void main(String[] args) {
int j = 0;
for(long i = 1 ; i<1000000000; i = i+(long)Math.pow(10, j)){
System.out.println(i*i);
j++;
}
}
publicstaticvoidmain(字符串[]args){
int j=0;
(长i=1;i试试这个
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 8; ++i) {
System.out.println(sb.append(i)
+ new StringBuilder(sb).reverse().substring(1));
}
StringBuilder sb=新建StringBuilder();
对于(inti=1;i,类似于C
#include <stdio.h>
int main(void){
for(int i = 1, n = 1, d = 1; n <= 8; i += d){
if(i == n){
d = -d;
} else if(i == 0){
d = -d;
++n;
puts("");
continue;
}
printf("%d", i);
}
}
#包括
内部主(空){
对于(int i=1,n=1,d=1;n我们真的很想看到,你迄今为止尝试了什么是的,一个线索:递归性。比如为什么这个问题被否决了?我知道他没有提供代码之类的,但我觉得这是一个完全有效的问题,可能会帮助其他人。你想要n=10的输出是什么?reverse()
函数本身在内部使用循环,这样更好:-D@Andremoniy修正:pTotally忘记了这是一件事:pOrfor(long i=1;它在Andremoniy对我的答案StringBuilder.reverse()的前9个数字发表评论后产生“错误”结果使用一个循环。因此这是两个循环。字符串连接也使用memcopy
形式的循环,因此我不认为这是相关的。这个问题本质上是O(N^2),所以不能用长度为N的单个循环来解决-在这种情况下,总是有一个隐藏循环。
#include <stdio.h>
int main(void){
for(int i = 1, n = 1, d = 1; n <= 8; i += d){
if(i == n){
d = -d;
} else if(i == 0){
d = -d;
++n;
puts("");
continue;
}
printf("%d", i);
}
}