JAVA, 81 79 78 bayt
JAVA (HotSpot) 71 70 bayt
Gönderdiğim sırada diğer Java cevaplarından daha kısa (81, sonra 79 bayt):
class A{public static void main(String[]a){String x="1";for(;;)x+=x.intern();}}
@ Olivier Grégoire tarafından önerildiği gibi, başka bir byte kaydedilebilir:
class A{public static void main(String[]a){for(String x="1";;)x+=x.intern();}}
x+=x.intern()For loop artışı olarak yerleştirmek hiçbir şeye yardımcı olmaz, çünkü for deyimini sonlandırmak için hala noktalı virgül gerekir.
@ETHproductions'un önerdiği gibi, sadece x+=xeserleri kullanmak :
class A{public static void main(String[]a){String x="1";for(;;)x+=x;}}
Ayrıca @Olivier Grégoire'nin bahşişinden de yararlanabilirsiniz:
class A{public static void main(String[]a){for(String x="1";;)x+=x;}}
Bununla ilgili tek endişem , verimli bir JVM'nin yerel işlevden asla kaçamayacağının kolayca fark edebileceğinden öbek üzerinde veri tahsis edilmesinin garanti edilmemesidir x. Kullanımı intern(), bu endişeyi ortadan kaldırır, çünkü interned dizeler sonuçta statik bir alanda depolanır. Ancak, HotSpot OutOfMemoryErrorbu kod için bir kod oluşturuyor , bu yüzden sanırım tamam.
Güncelleme: @Olivier Gregoire ayrıca x+=x, StringIndexOutOfBoundsExceptionçok fazla OOMhafıza olması yerine kodun çalıştırılabileceğini belirtti . Bunun nedeni, Java intdizileri dizine almak için 32 bit türünü kullanmasıdır (ve Dizeler yalnızca dizilerdir char). x+=x.intern()Sonuncusu için gerekli olan bellek, dizenin uzunluğunda ikinci dereceden olduğu için bu çözümü etkilemez ve bu nedenle 2 ^ 62 ayrılmış bayt sırasına göre ölçeklendirilmelidir.