したがって、次のコードがある場合:
public int sumSquares(int n){
int sum = 0;
for(int i = 1; i <=n; i++){
sum += i*i;
}
return sum;
}
ここで、ループ不変条件を見つけなければなりません。このようなループの場合、Y = i^2 の不変式はループ不変式と見なされると言われましたが、それがループ不変式であることを証明する方法がわからないのです。Y は単なるものであるため、ループの前、ループ中、およびループ後は常に true です。これは、i*i が何であれ ... それが不変式であることの有効な証拠ですか?
また、不変式を使用してアルゴリズムを証明する場合、合計 = i*i (または Y、ループ不変式) の 1 から n までの合計 = n(n+1)(2n+1 )/6
それでは、帰納法を使ってそれが正しいことを示しますか? アルゴリズムを証明するためにループ不変式を適切に使用していますか?
助けていただければ幸いです:)