專題一 遞迴呼叫與列舉演算法的例子

2021-07-23 13:27:41 字數 1454 閱讀 7729

bnuoj4116

輸入資料只有乙個數n ,範圍: n>=0 && n<=30000

我先後寫了兩個版本:

[cpp]view plain

copy

#include 

#include 

#include 

using

namespace

std;  

intmain()  

}  if(i==

int(sqrt(a))+1)   

else

}  return

0;  

}  

[cpp]view plain

copy

#include 

#include 

#include 

using

namespace

std;  

intmain()  

}  if(i==

int(sqrt(a))+1)   

else

}  return

0;  

}  

注意到前者特別考慮2和3,其實是不必要的,只需要調整for的執行內容;這個例子主要在於體會for和break的運用;前者因為cout在for裡面,所以必須單獨考慮2,3,後者因為cout在for執行語句之外,所以簡易。

另外貼出直接判斷乙個輸入的數是否是質數的**,

定乙個數是否是質數,體會for和break的運用:

[cpp]view plain

copy

#include 

#include 

#include 

using

namespace

std;  

intmain()  

}  if(i==

int(sqrt(a))+1)   

else

}  return

0;  

}  

bnuoj4117

該題可幫助體會函式定義及其呼叫;

注意體會程式流程(我的見解寫於**注釋);

#include 

intn,k;  

inttt[1];  

/*  tt[pt]表示第pt個數的取值  */

void

di(int

pt)  

else

}  }  int

main()  

//注意體會這裡的pt,實際上是位數的感覺,一旦位數超過k就左移位數,否則右進製數,一定注意pt和i的值並不是覆蓋儲存

//注意,c語言不檢查陣列的邊界,因此程式可以在陣列的兩邊越界。如上例可以寫 int tt[1],儘管這導致溢位:

函式的遞迴呼叫 專題

遞迴呼叫 函式的遞迴呼叫,就是函式在執行的時候自動呼叫自己!功能 當我們把乙個大問題按照某種解決方案細化為若干個小問題的時候,結果我們發現這些小問題的解決方案又和前面大問題的解決方案是一樣的!語法格式 function 函式名 遞迴出口 不要忘了,不然進入死迴圈 呼叫其他函式 函式名 函式名 所以,...

聯機演算法 與 遞迴呼叫 的分析

聯機演算法 在任意時刻,演算法對要操作的資料唯讀入 掃瞄 一次,一旦被讀入並處理,它就不需要在被記憶了。而在此處理過程中演算法能對它已經讀入的資料立即給出相應子串行問題的正確答案。具有這種特性的演算法叫做聯機演算法 on line algorithm 該演算法僅需要常量空間並以線性時間執行,因此聯機...

7 22 遞迴的例子 樓梯演算法

n層階梯的樓梯,每次可以走1 2層階梯,列印列舉所有走法。比如 走1層的可能走法 1種 1 走2層的可能走法 2種 1 1 2 走3層的可能走法 3種 1 1 1 1 2 2 1 走4層的可能走法 5種 1 1 1 1 1 1 2 2 2 2 1 1 1 2 1 走n層的走法 privatestat...