正文裡面涉及到程式設計方法學的內容。不再細述
1、加及條件是0<=l u<=n-1
2、這個函式可以寫成如下形式:
int bs(int *a, int begin, int end, int v)
if ((e-a) < end && (*e == v)) return e-a;
return -1;
}
再給一段測試**
#include #include int cmp(const void *a, const void *b)
int bs(int *a, int begin, int end, int v)
if ((e-a) < end && (*e == v)) return e-a;
return -1;
}int find(int *a, int begin, int end, int v)
int main(void)
return 0;
}
3、4、5、略過
6、涉及程式終止性證明,即每一步都至少會仍出乙個豆子,所以總會結束的。不會無限迴圈。此外,白色的豆子要麼拿兩個,要麼不扔,所以白色的豆子如果是奇數,則會留下乙個來。
7、題目裡面如果要採用二分搜尋,那麼需要找的是乙個數的剛好下界。可以採用本部落格中對二分查詢的補充方法。
第四章 程式設計
選擇語言的原則 最少的工作量原則 最少技巧性原則 最少錯誤原則 最少維護原則 減少記憶原則 總原則 先求正確後求快 先求清晰後求快 求快不忘保持程式正確性 保持程式整潔以求快 不要因效率而犧牲清晰 好程式標準 易於測試和除錯 易於維護 易於修改 設計簡單 高效率結構化程式設計主要包括兩方面 在編寫程...
程式設計珠璣 第四章 編寫正確的程式
1 對下標限定界限 加條件 0 l u n 1 2 這個函式可以寫成如下形式 include using namespace std int bs int a,int begin,int end,int v if e a end e v return e a return 1 int main co...
程式設計珠璣 第四章 編寫正確的程式
1 對下標限定界限 加條件 0 l u n 1 2 這個函式可以寫成如下形式 include using namespace std int bs int a,int begin,int end,int v if e a end e v return e a return 1 int main co...