Erinevus lehekülje "ITI0011:harjutus 18" redaktsioonide vahel
(→Mall) |
|||
(ei näidata 2 kasutaja 6 vahepealset redaktsiooni) | |||
3. rida: | 3. rida: | ||
Rekursiooniga tutvumiseks on soovitatav uurida: | Rekursiooniga tutvumiseks on soovitatav uurida: | ||
− | http://pages.cs.wisc.edu/~vernon/cs367/notes/6.RECURSION.html | + | * http://pages.cs.wisc.edu/~vernon/cs367/notes/6.RECURSION.html |
* Faktoriaal rekursiooniga https://mitpress.mit.edu/sicp/full-text/sicp/book/chapter-1/figs/fact-shape.gif | * Faktoriaal rekursiooniga https://mitpress.mit.edu/sicp/full-text/sicp/book/chapter-1/figs/fact-shape.gif | ||
* Sama asja visualiseerimine java visualizeriga http://goo.gl/ByLxHY | * Sama asja visualiseerimine java visualizeriga http://goo.gl/ByLxHY | ||
11. rida: | 11. rida: | ||
EX18 tarvis tuleb realiseerida 2 funktsiooni: | EX18 tarvis tuleb realiseerida 2 funktsiooni: | ||
− | * maxAbsoluteValueInArray(int[], | + | * <code>'''maxAbsoluteValueInArray(int[] array, int arrayLength)'''</code> |
− | Näiteks [4,-5,1,-2] tagastab 5. Lahendus peaks kasutama rekursiivset loogikat, st funktsioon peab tagastama isennast. <code>for</code> ja <code>while</code> tsüklid pole lubatud. | + | : Näiteks [4,-5,1,-2] tagastab 5. Lahendus peaks kasutama rekursiivset loogikat, st funktsioon peab tagastama isennast. <code>for</code> ja <code>while</code> tsüklid pole lubatud. |
− | Näpunäiteid: | + | : Näpunäiteid: |
− | Oletame, et rivis on 4 inimest. Igaüks mõtleb ühe arvu, me tahame teada, kes mõtles kõige suurema arvu (ilma sohki tegemata). | + | : Oletame, et rivis on 4 inimest. Igaüks mõtleb ühe arvu, me tahame teada, kes mõtles kõige suurema arvu (ilma sohki tegemata). |
− | Info edastamiseks sosistatakse üksteisele kõrva. | + | : Info edastamiseks sosistatakse üksteisele kõrva. |
− | Saame kasutada järgnevat loogikat: | + | : Saame kasutada järgnevat loogikat: |
− | Esimene inimene rivis sosistab teisele, maksimaalne arv on <code>max(1_inimese_arv, ülejäänud_rivi_max)</code> | + | : Esimene inimene rivis sosistab teisele, maksimaalne arv on <code>max(1_inimese_arv, ülejäänud_rivi_max)</code> |
− | Teine inimene, saab seda loogikat täiendada oma numbriga järgnevalt <code>max(1_inimese_arv, max(2_inimese_arv,ülejäänud_rivi_max))</code> | + | : Teine inimene, saab seda loogikat täiendada oma numbriga järgnevalt <code>max(1_inimese_arv, max(2_inimese_arv,ülejäänud_rivi_max))</code> |
− | Kolmas inimene omakorda <code>max(1_inimese_arv,max(2_inimese_arv,max( | + | : Kolmas inimene omakorda <code>max(1_inimese_arv,max(2_inimese_arv,max(3_inimese_arv, ülejäänud_rivi_max)))</code> |
− | Viimane teab, et ta on viimane ja tema ülesandeks on arvutada <code>max(1_inimese_arv,max(2_inimese_arv,max( | + | : Viimane teab, et ta on viimane ja tema ülesandeks on arvutada <code>max(1_inimese_arv,max(2_inimese_arv,max(3_inimese_arv, 4_inimese_arv)))</code> |
− | Kui viimane saab arvutatud, siis ta saab sosistada eelviimasele vastuse, eelviimane üle-eelviimasele ja nii alguseni välja. | + | : Kui viimane saab arvutatud, siis ta saab sosistada eelviimasele vastuse, eelviimane üle-eelviimasele ja nii alguseni välja. |
− | Arvudega | + | : Arvudega |
− | + | : | |
− | max(4, ülejäänud_rivi_max) | + | : max(4, ülejäänud_rivi_max) |
− | max(4, max(-5, ülejäänud_rivi_max)) | + | : max(4, max(-5, ülejäänud_rivi_max)) |
− | max(4, max(-5, max(1, ülejäänud_rivi_max))) | + | : max(4, max(-5, max(1, ülejäänud_rivi_max))) |
− | max(4, max(-5, max(1, -2))) = 4 | + | : max(4, max(-5, max(1, -2))) = 4 |
− | |||
− | |||
− | * maxElementInArray(int[]), tagastab massiivi maksimaalse elemendi. | + | : Absoluutväärtustega toimub analoogliselt. |
+ | |||
+ | * <code>'''maxElementInArray(int[] array)'''</code>, tagastab massiivi maksimaalse elemendi. | ||
Tehke kindlasti esimesena maxABsoluteValueInArray, selle lahendamiseks mõelge loovalt ja kasutage array enda ruumi ajutiste väärtuste hoidmiseks | Tehke kindlasti esimesena maxABsoluteValueInArray, selle lahendamiseks mõelge loovalt ja kasutage array enda ruumi ajutiste väärtuste hoidmiseks | ||
54. rida: | 54. rida: | ||
// Test here | // Test here | ||
− | System.out.println(maxElementInArray(new int[] { 12,4,2,1,9,11})); | + | System.out.println(maxElementInArray(new int[] {12, 4, 2, 1, 9, 11})); |
− | System.out.println(maxAbsoluteValueInArray(new int[] { 12,4,2,1,9,11, -14}, 7)); | + | System.out.println(maxAbsoluteValueInArray(new int[] {12, 4, 2, 1, 9, 11, -14}, 7)); |
} | } | ||
64. rida: | 64. rida: | ||
* Returns absolute maximum (Distance from 0) value of an array RECURSIVELY. | * Returns absolute maximum (Distance from 0) value of an array RECURSIVELY. | ||
* Example | * Example | ||
− | * [4,2,1-5,-1] => 5 | + | * [4,2,1,-5,-1] => 5 |
* @param arr | * @param arr | ||
* @param arrLength - array length when initialized | * @param arrLength - array length when initialized | ||
70. rida: | 70. rida: | ||
* @return valueOfMaximumAbsoluteElement | * @return valueOfMaximumAbsoluteElement | ||
*/ | */ | ||
− | public static int maxAbsoluteValueInArray(int[] | + | public static int maxAbsoluteValueInArray(int[] array, int arrayLength) throws IllegalArgumentException { |
// TODO: Implement | // TODO: Implement | ||
return 0; | return 0; | ||
83. rida: | 83. rida: | ||
* @return valueOfMaximumElement | * @return valueOfMaximumElement | ||
*/ | */ | ||
− | public static int maxElementInArray(int[] | + | public static int maxElementInArray(int[] array) throws IllegalArgumentException { |
// TODO: Implement | // TODO: Implement | ||
return 0; | return 0; |
Viimane redaktsioon: 29. aprill 2015, kell 12:20
Kirjeldus
Rekursiooniga tutvumiseks on soovitatav uurida:
- http://pages.cs.wisc.edu/~vernon/cs367/notes/6.RECURSION.html
- Faktoriaal rekursiooniga https://mitpress.mit.edu/sicp/full-text/sicp/book/chapter-1/figs/fact-shape.gif
- Sama asja visualiseerimine java visualizeriga http://goo.gl/ByLxHY
- Fibonacci N'nda numbri saamise visualiseerimine: http://visualgo.net/recursion.html
- Soovi korral harjutamiseks: http://codingbat.com/java/Recursion-1
EX18 tarvis tuleb realiseerida 2 funktsiooni:
maxAbsoluteValueInArray(int[] array, int arrayLength)
- Näiteks [4,-5,1,-2] tagastab 5. Lahendus peaks kasutama rekursiivset loogikat, st funktsioon peab tagastama isennast.
for
jawhile
tsüklid pole lubatud. - Näpunäiteid:
- Oletame, et rivis on 4 inimest. Igaüks mõtleb ühe arvu, me tahame teada, kes mõtles kõige suurema arvu (ilma sohki tegemata).
- Info edastamiseks sosistatakse üksteisele kõrva.
- Saame kasutada järgnevat loogikat:
- Esimene inimene rivis sosistab teisele, maksimaalne arv on
max(1_inimese_arv, ülejäänud_rivi_max)
- Teine inimene, saab seda loogikat täiendada oma numbriga järgnevalt
max(1_inimese_arv, max(2_inimese_arv,ülejäänud_rivi_max))
- Kolmas inimene omakorda
max(1_inimese_arv,max(2_inimese_arv,max(3_inimese_arv, ülejäänud_rivi_max)))
- Viimane teab, et ta on viimane ja tema ülesandeks on arvutada
max(1_inimese_arv,max(2_inimese_arv,max(3_inimese_arv, 4_inimese_arv)))
- Kui viimane saab arvutatud, siis ta saab sosistada eelviimasele vastuse, eelviimane üle-eelviimasele ja nii alguseni välja.
- Arvudega
- max(4, ülejäänud_rivi_max)
- max(4, max(-5, ülejäänud_rivi_max))
- max(4, max(-5, max(1, ülejäänud_rivi_max)))
- max(4, max(-5, max(1, -2))) = 4
- Absoluutväärtustega toimub analoogliselt.
maxElementInArray(int[] array)
, tagastab massiivi maksimaalse elemendi.
Tehke kindlasti esimesena maxABsoluteValueInArray, selle lahendamiseks mõelge loovalt ja kasutage array enda ruumi ajutiste väärtuste hoidmiseks
Mall
<source lang="java">
/**
* EX 18 Solution. * @author <Your Name> */
public class EX18 {
public static void main(String[] args) { // Test here
System.out.println(maxElementInArray(new int[] {12, 4, 2, 1, 9, 11})); System.out.println(maxAbsoluteValueInArray(new int[] {12, 4, 2, 1, 9, 11, -14}, 7));
}
/**
*
* Returns absolute maximum (Distance from 0) value of an array RECURSIVELY.
* Example
* [4,2,1,-5,-1] => 5
* @param arr
* @param arrLength - array length when initialized
* @throws IllegalArgumentException if arr is null or arrLength is negative
* @return valueOfMaximumAbsoluteElement
*/
public static int maxAbsoluteValueInArray(int[] array, int arrayLength) throws IllegalArgumentException {
// TODO: Implement
return 0;
}
/** * Returns maximum element of an array RECURSIVELY. * Example * [4,2,1-5-1] -> 4 * @param arr * @throws IllegalArgumentException if arr is null * @return valueOfMaximumElement */ public static int maxElementInArray(int[] array) throws IllegalArgumentException { // TODO: Implement return 0; }
}
</source>