Funzioni ricorsive
Fa parte della sezione Logica e flusso del percorso Kotlin di Coddy. Lezione 44 di 63.
Una funzione ricorsiva chiama sé stessa su un sottoproblema più piccolo. Un caso base restituisce un risultato senza un'altra chiamata ricorsiva. Per un totale del conto alla rovescia, zero è il caso base e n - 1 si avvicina a esso. La ricorsione ordinaria usa spazio nello stack delle chiamate, quindi mantieni ridotta la profondità dell'input.
fun countdownSum(n: Int): Int {
if (n == 0) return 0
return n + countdownSum(n - 1)
}All’interno di main:
println(countdownSum(4))Le chiamate sommano quattro, tre, due e uno, poi si fermano a zero.
La ricorsione richiede un caso base raggiungibile e un progresso verso di esso.
Sfida
MedioCompleta recursiveSum con il parametro number: Int. Usando la ricorsione, restituisci la somma da 1 a number. number è compreso tra 0 e 100. Il risultato per zero è zero.
Salvo che sopra non siano specificati limiti più restrittivi, le raccolte contengono al massimo 100 elementi a ogni livello e gli argomenti interi e i valori interi delle raccolte sono compresi tra -1000 e 1000. Il testo fornito per l'analisi può includere rappresentazioni non valide o fuori intervallo, come descritto.
Restituisci un valore di tipo Int. Mantieni il codice di input/output fornito. Legge gli argomenti scalari, uno per riga; una lista inizia con il suo conteggio seguito dai suoi elementi, e una mappa inizia con il conteggio delle sue voci seguito da ogni chiave e valore. Le liste annidate ripetono il formato conteggio-elementi per ogni riga. Il main fornito stampa il valore restituito seguito da un carattere di nuova riga. Le liste usano il formato standard tra parentesi quadre di Kotlin; non stampare etichette aggiuntive.
Provalo tu
fun recursiveSum(number: Int): Int {
// Scrivi qui la tua soluzione.
return 0
}
fun main() {
val number = readln().toInt()
println(recursiveSum(number))
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Mappe Parte 1
Creare mappeConsultare le mappe in modo sicuroAggiornare le mappeControllare le chiaviRiepilogo - Banco di borsa4Collezioni annidate
Liste di listeAttraversare le righeRiepiloghi delle righeAppiattire liste annidateRipasso - File di posti a sedere7Pipeline di collezioni
Trasformare con MapFiltrare i valoriVerificare le regole della collezioneAccumulare con FoldRiepilogo - Totali approvati2Mappe Parte 2
Iterare sulle voci delle mappeChiavi e valoriMappe di frequenzaMappe annidateRiepilogo - Report delle frequenze5Progetto - Rubrica
Salva contattiTrova contatti3Insiemi e appartenenza
Creare insiemiAggiornare gli insiemiOperazioni sugli insiemiVerificare i sottoinsiemiRiepilogo - Ospiti dell'evento6Valori delle funzioni
Scrivere funzioni lambdaTipi di funzionePassare funzioniVariabili catturateRiepilogo - Punteggio configurabile9Flusso di controllo avanzato
Clausole di guardiaInterrompere cicli etichettatiContinuare cicli etichettatiFunzioni ricorsiveRiepilogo - Prima riga validaEsercitati da solo: Playground Kotlin