だから私がしたいのは、ユーザに彼の配列の大きさを尋ねるプログラムと、ユーザが配列の中に値を導入することを要求するプログラムです。次に、ユーザーが数字を導入し、プログラムが数字の配列を判断したり、存在しないと判断したりすることができます。次のプログラムは現在、配列の値をランダムに生成し、ユーザーは使用したい配列要素の数を導入します。しかし、私は以前に説明したことにこれをどう対応させるべきかわかりません。スタートのために配列、関数、バイナリ検索で宿題をするにはどうしたらいいですか?
package laboratorio9;
import java.util.Random;
import java.util.Arrays;
public class ArregloBinario
{
private int[] datos;
private static Random generador = new Random();
public ArregloBinario (int tamanio)
{
datos = new int[tamanio];
for (int i=0; i<tamanio; i++)
datos[i] = 10 + generador.nextInt(90);
Arrays.sort(datos);
}
public int busquedaBinaria(int elementoBusqueda)
{
int inferior = 0;
int superior = datos.length-1;
int medio = (inferior + superior + 1)/2;
int ubicacion = -1;
// **HOW CAN I CHANGE THE FOLLOWING NTO A RECURSIVE FUNCTION>**
do
{
System.out.print(elementosRestantes(inferior,superior));
for (int i = 0; i<medio; i++)
System.out.print(" ");
System.out.println(" * ");
if (elementoBusqueda == datos[medio])
ubicacion=medio;
else if (elementoBusqueda<datos[medio])
superior = medio-1;
else
inferior = medio+1;
medio = (inferior + superior + 1)/2;
} while ((inferior <=superior) && (ubicacion == -1));
return ubicacion;
}
public String elementosRestantes(int inferior, int superior)
{
StringBuilder temporal = new StringBuilder();
for (int i = 0; i < inferior; i++)
temporal.append(" ");
for (int i = inferior; i <= superior; i++)
temporal.append(datos[i] + " ");
temporal.append("\n");
return temporal.toString();
}
public String toString()
{
return elementosRestantes(0, datos.length-1);
}
}
// MAIN CLASS //
package laboratorio9;
import java.util.Scanner;
public class PruebaBusquedaBinaria {
public static void main(String[] args)
{
Scanner entrada = new Scanner(System.in);
int enteroABuscar;
int posicion;
System.out.println("Please write the number of elements in the array.");
int number = entrada.nextInt();
ArregloBinario arregloBusqueda = new ArregloBinario(number);
System.out.println(arregloBusqueda);
System.out.print("Write a value (-1) to go out: ");
enteroABuscar = entrada.nextInt();
System.out.println();
while (enteroABuscar != -1)
{
posicion = arregloBusqueda.busquedaBinaria(enteroABuscar);
if (posicion==-1)
System.out.println("The value " + enteroABuscar + " was not found.\n");
else
System.out.println("The value " + enteroABuscar +
" was found in position " + posicion + ".\n");
System.out.print(
"Write a number (-1 to go out): ");
enteroABuscar = entrada.nextInt();
System.out.println();
}
}
}
あなたは何をしようとしましたか?私たちはあなたのための宿題をするつもりはありません... "私は仕事をしようとしたことを私は得ることができませんし、あなたに再帰をしようとしたコードを表示することをお勧めします。" – TofuBeer
私 ユーザーにどのように値を提供したいのですか? ループ内ではなく再帰的な検索を作成する目的はありますか? – Damovisa
上記の "繰り返し"バイナリ検索です。繰り返し検索と再帰的バイナリ検索を比較しているGoogleのリソースはたくさんありますが、do/whileループを置き換えて、あなたの思いつきを投稿してください。対処? – razlebe