Salve ,
aduri premetto che non sono fresco da Algoritmi ma ,
Allora nel primo caso credo che il tuo " 1 " è una costante relativa al fatto che cmq bisogna fare una valutazione del problema e cmq lo puo sapere trovandosi la formula della tecnica "divide ed impera" a cui tu fai riferimento con la formula iterativa T(n).... .
L'altra domanda n(n-1) vuole indicare in un'altra forma matematica tutte le operzioni restanti .
Infine l'analisi che tu stai conducendo io penso che non sia molto corretta perchè quando si valutano gli algoritmi specie se in java per tutto quello che java crea all'avvio(oggetti) si trascurano tutte le costanti quindi 1 ... dovresti valutare all'infinito come nei limiti il termine con esponente maggiore da la " O " (o grande=ovvero il peggio che un algortimo possa fare , il massimo delle operazioni che si possono fare per risolvere un problema ; quindi non ottimale) .
Il secondo quesito prova a guardare il tutto così :
for(i=4; i<a.length;i++){
for(j=i-3,sum=a[i-4]; j<=i;j++)
sum+=a[j];
System.out.println("Somma sub "+sum);
}
T(n)= 1+ (n-3)(1 + 2 + 4·2) = O(n) è giusto !
qui mi pare che la condizione cardine è j<=i , esecuzione :
per i=4 --> j=1 cond j<=i è vera
per i=5 --> j=2 cond " è vera
per i=6 --> j=3 cond " è vera
per i=7 --> j=4 cond " è vera
per i=8 --> j=5 cond " è vera
per i=9 --> j=6 cond " è vera
per i=10 -> j=7 cond " è vera
per i=11 -> j=8 cond " è vera
per i=12 -> j=9 cond " è vera
per i=13 -> j=10 cond " è vera
per i=14 -> j=11 cond " è vera
Duufferenza costante è sempre n-3 e non n-4 , ci pensi !!!