在遞迴終止條件前進行了一些操作,導致程式bug

2021-08-08 03:32:06 字數 365 閱讀 7459

通常遞迴終止條件放置在程式的開始,但是在c語言中變數宣告和初始化必須放置在函式的開頭。在不注意的情況下可能導致一些難以察覺的bug,如下:

treenode * buildtree(char *preorder, char *inorder, int begin, int end)

root = newtreenode(c);

root->left = buildtree(preorder, inorder, begin, i - 1);

root->right = buildtree(preorder, inorder, i + 1, end);

return root;

}

遞迴函式終止方式

1 我們知道區域性靜態變數存放在堆中而不是棧中,所以它在程式生命週期內都是存在的,只是只有在函式內才能被訪問,其內容是上次處理後的內容或是初始化後的內容,呼叫多次都同乙個變數例項。所以區域性靜態變數是可以控制遞迴函式最終結束的。2 可能通過異常來控制遞迴的結束。其實這種情況很常見,每個應用程式的預設...

驗證查詢條件 起始時間和終止日期

function selectsubmit if invaliddepname 1.拿到當前選中的條件各選項的值 var startdate document.getelementbyid startdate value var enddate document.getelementbyid end...

逐行更新資料,滿足條件後終止 葉子

需求貼 要求說明 例如下表中有充值記錄,每個人可能充值多次,當消費的時候,根據消費金額更新充值記錄 例如張三充值 3次,分別為 17,2,12 假設其消費 22元,則更新為 0,0,9 就是說17和2 的兩筆錢花完了,12那筆錢還剩 9元。如果消費 18元,則更新為 0,1,12 如果消費了 13元...