mystery(int A[1..n], int n) {
// pre: n is a power of 2 for i=1..n {
for i = 1...n {
A[i] = A[i] + 1;
}
if (n>1) mystery(A, n/2);
}
}
最悪の場合、O(n) で実行されると思いますが、そうですか?
編集:これは別の古い試験(回答があります)からのものですが、次のアルゴリズムはO(n * log n)時間で実行されます(回答による)。なんでそうなの?これら2つは、いくつかの定数だけ異なるはずですが。
void silly (int n)
if (n>1)
for (int i=0; i<n; i++)
output "looping for fun"
silly(n/2)
for (int i=0; i<n; i++)
output "looping for more fun"
silly(n/2)
for (int i=0; i<n; i++)
output "looping for even more fun"