Aşağıdaki algoritmalara sahibim: Amaç, işaretler arasında geçiş yapabilmeleri için bir dizi sayının tüm olası permütasyonlarını bulmaktır. Ağaçta bir yaprak düğümüne ulaştığında, bu permütasyonun toplamının serideki bir sayıya eşit olup olmadığını görmek için bir liste üzerinde yinelenen başka bir yöntemi çağırır. Ayrıca, bir dizinin bir alt kümesinin belirli bir sayıdan daha az olup olmadığını görmek için bir algoritma ile uğraşıyorum. Örneğin 60, 35 ve 40 sayıları, 60 + 40 < 110. Sorunum, ağacın bir dalının diğer dallara ihtiyaç duyduğumda bulunması halinde hala keşfedilebileceğidir. Bunu nasıl kesebilirim? Şu anda sahip olduğum her bir system.exit(1);
Bir değeri çalıştırmadan önce döndürmek için nasıl bir özyinelemeli algoritma alabilirim?
public static int PlusMinus(Node start, Node node, int Sum){
Node head = start;
boolean Success = false;
if(node != null){
PlusMinus(head, node.next, node.item+Sum);
PlusMinus(head, node.next, node.item*(-1)+Sum);
return Sum;
}
else{
Success = getSum(Sum,start);
if(Success == true){
System.out.println("Yes");
System.exit(1);
return 1;
}
}
return 0;
}
yukarıda bakıldığında ise, benim asıl niyeti bu çağıran programa yaprak düğüm toplamını iade sahip olmaktı. Anladığım kadarıyla, programa adım atmaktan, eğer en sağdaki dal, doğru permütasyon ise, bu sadece yaprak düğüm dönüş değeriyle bitmeyecektir. Yine de ebeveyne geri dönecek ve ardından bir sonraki şubeyi test etmeye devam edecek.
Toplamı iade etme ve bu iki yöntemi çağırmanın amacı nedir? – Natecat
Hiçbir zaman kontrol akışı için 'System.exit()' kullanmayın. Bu çok kötü bir tasarım. Kullanıcı, bu yöntemin bir değer döndürmesini bekler, ancak tüm JVM'yi durduramayacaktır. –