首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 第 4 週項目:函數設計與遞歸實戰——最大公約數、正弦泰勒展開、猜數字遊戲、遞歸分析

     編輯:關於C++

項目 1:最大公約數函數族

  • gcd(a,b):輾轉相除法實現
  • gcds(a,b,c,d):調用 gcd 兩次組合求四數最大公約數
  • 單步調試觀察調用棧與參數傳遞

項目 2:正弦泰勒展開自定義實現

sin x = x - x³/3! + x⁵/5! - x⁷/7! + ...

  • 自定義 myabs 求絕對值
  • 項絕對值 < 0.00001 終止累加
  • 角度轉弧度:rad = deg * π / 180
  • 驗證:sin(π/2)=1, sin(56°)≈0.829038

項目 3:隨機數應用小遊戲

猜數字

  • srand(time(0)) 初始化種子
  • rand()%1000+1 生成 1~1000 隨機數
  • 提示「大了/小了」,統計猜測次數

小學生算術測試

  • 隨機生成 10 道 ±×÷ 題,操作數 ≤ 99
  • 判定答案正確性,統計得分

項目 4:遞歸程序手動模擬分析

例 1:遞歸打印

void fun(int k) {
    if (k>0) fun(k-1);
    cout << k;
}
fun(5); // 輸出:0 1 2 3 4 5

例 2:字符遞歸

void recur(char c) {
    cout << c;
    if (c<'9') recur(c+1);
}
recur('0'); // 輸出:0123456789

例 3:引用參數修改

int fun2(int a,int b){ return a*b%3; }
int fun1(int &a,int &b){
    a+=a; b+=b;
    return fun2(a,b)*fun2(a,b);
}
// main: x=11,y=19 → fun1 調用後 x=22,y=38 → 返回 (22*38%3)² = 1² = 1

項目 5:默認參數陷阱

  • 默認值只能在聲明處給出,定義處不能重複
  • 默認參數必須靠右:f(int a, int b=1) 合法,f(int a=1, int b) 非法
  • 調用時可省略尾部參數

項目 6:遞歸函數編寫練習

  1. 階乘 fact(n)
  2. 奇數乘積 oddProd(n)
  3. 遞歸求 gcd
  4. 費波納契 fib(20)(注意遞歸指數複雜度,教學用)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved