这么一个求前m项和的斐波那契及前缀和的代码,为什么用循环是对的,用递推是错误的?
注:运用sum[cnt]溢出小于0来判断是否在longlong范围内。
for(cnt=m+1;;++cnt){ //for(int i=1;i<=m;i++) f[cnt]+=f[cnt-i]; f[cnt]=f[cnt-1]-f[cnt-m-1]+f[cnt-1]; sum[cnt]=sum[cnt-1]+f[cnt]; if(sum[cnt]<0) break; }