2010-10-20 16 views
6

Hi
Sto cercando di scrivere una funzione ricorsiva che calcola la lunghezza della stringa in Java
So che esiste già la funzione str.length(), ma la dichiarazione del problema vuole implementare una funzione ricorsivacome la stringa termina in java?

Nel linguaggio di programmazione C il carattere di terminazione è '\ 0', voglio solo sapere come sapere se la stringa finisce in Java

Il mio programma termina bene quando inserisco '\ n' nella stringa di test. Per favore mi faccia sapere. Grazie!

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

package careercup.google; 

/** 
* 
* @author learner 
*/ 
public class Strlen { 
    private static final String Test = "abcdefg\n"; 
    private static int i =0; 

    public static void main(String args[]){ 
     System.out.println("len : " + strlen(Test)); 
    } 

    private static int strlen(String str){ 
     if(str == null){ 
      return 0; 
     } 
     if(str.charAt(i) == '\n'){ 
      return 0; 
     } 
     i += 1; 
     return 1 + strlen(str); 
    } 
} 

uscita:

run: 
len : 7 
BUILD SUCCESSFUL (total time: 0 seconds) 

risposta

2

Si prega di tenere presente che questo codice è molto inefficiente, ma calcola la lunghezza di di una stringa in modo ricorsivo.

private static int stringLength(String string){ 
     if(string == null){ 
      return 0; 
     } 

     if(string.isEmpty()){ 
      return 0; 
     } 

     return 1 + stringLength(string.substring(1)); 
    } 
+0

+1, questo era l'esempio (completamente inventato) che avrei scritto, se non mi avessi salvato dall'attività:) –

+0

@learner: questo esempio è molto meno artificioso in C, in cui si ha accesso alla memoria nuda e il codice (quando ottimizzato) si compila sullo stesso ciclo di: 'int count = 0; while (pointerToChar ++! = NULL) {count ++; } ' –

14

stringhe Java non sono stringhe C. La stringa termina dopo il numero di caratteri nella sua lunghezza.

+0

Ciao Ignacio, quindi vuol dire che non possiamo mai sapere se una stringa è terminata eccetto se (i == str.length() - 1) ?? – daydreamer

+4

@learner. Sì. Al contrario, puoi chiamare String.length e ti dirà la lunghezza senza dover iterare l'intera stringa per trovare il terminatore. Questa è una buona cosa. – Thilo

+0

Grazie Thilo !, ho capito, stavo solo vagando se scrivere tale funzione è Java è possibile a tutti – daydreamer

1

Non credo che questa è una buona domanda, dal momento che stringa in Java è sostenuta da un array di caratteri con un conteggio, è possibile ottenere la lunghezza in modo molto semplice, perché prendere la briga di implementare un metodo ricorsivo?

+2

La domanda include" la dichiarazione del problema "e il poster menzionato' string.length' stesso. Suppongo quindi che si tratti di una sorta di esercizio sulle funzioni ricorsive: invocazione ricorsiva + condizione di terminazione. La domanda, come come esprimere la condizione di terminazione dato che non esiste un carattere "sentinella" è perfettamente valida, IMHO. –

Problemi correlati