Wpis z mikrobloga

#cpp #programowanie

Kolejne problemy początkującego programisty.

Muszę napisać rekurencyjną funkcję maximum. Mam tablicę i ilość jej elementów. Całość ma być zrobiona na wskaźnikach.

Na chwilę obecną doszedłem do tego:



int
```**```
* maksimum ( 
```**```
int
```**```
 N, 
```**```
int
```**```
 *t ) {   

    
```**```
if
```**```
 ( N == 0 )

        
```**```
return
```**```
 t + 0;

    
```**```
if
```**```
 ( *( t + N ) > *( maksimum ( N - 1, t )) ) 

        
```**```
return
```**```
 t + N;

}

```Wywołanie dla tablicy int t[] = {1,2,3,4,5,6};```

cout << *maksimum ( 6, t );

Nie mam pomysłu, jak to ruszyć inaczej. Czy byłby ktoś tak miły i choć trochę mnie nakierował?
  • 21
@jedentrylion: sprawdź co będzie jak dodasz na końcu

return maksimum ( N - 1, t );
zasadniczo przy kompilacji masz teraz

warning C4715: 'funkcja' : not all control paths return a value


co oznacza

"Ostrzeżenie to informuje, że funkcja nie uwzględnia wszystkich możliwych ścieżek przejścia, co w konsekwencji może dla pewnych danych spowodować niezdefiniowane zachowanie kodu"

czyli tak jak mówi @wytrzzeszcz zapomniałeś dodać ostatniej opcji
@wytrzzeszcz: Dziękuję : )

@EssePL: Mam nadzieję, że o to chodziło.



int
```**```
* maksimum ( 
```**```
int
```**```
 N, 
```**```
int
```**```
 *t ) {   

    
```**```
if
```**```
 ( N == 0 )

        
```**```
return
```**```
 t;

    
```**```
int
```**```
* zm = ( maksimum ( N - 1, t ));

    
```**```
if
```**```
 ( *( t + N ) > *zm ) 

        
```**```
return
```**```
 t+N;

    
```**```
else
```**```
 
```**```
if
```**```
 ( *( t + N ) < *zm ) 

        
```**```
return
```**```
 zm;

}
@jedentrylion: ta zmienna zm jest niepotrzebna, dobrze miałeś, no i nie musisz dodawać "else if" bo jak wejdzie do ifa to pójdzie do returna to i tak dalej nie idzie, a jak nie wejdzie to po prostu dajesz 1 linijke z returnem :)
@jedentrylion:

@EssePL:

teraz widze, ze w sumie i else i else if jest zle ;) bo nie uwzglednia ze obie strony sa rowne, daj po prostu linijke z returnem ;) to bedzie tak samo jak else if <=

int * maksimum ( int N, int *t ) {

if ( N == 0 )

return (t + 0);

if ( *( t + N ) > *( maksimum ( N