C語言習題講解-第九講- 常見錯誤分類等

C語言習題講解-第九講- 常見錯誤分類等

  • 1. C程序常見的錯誤分類不包含:( )
  • 2. 根據下面遞歸函數:調用函數 ` Fun(2) ` ,返回值是多少( )
  • 3. 關于遞歸的描述錯誤的是:( )
  • 4. 計算斐波那契數
  • 5. 遞歸實現 n 的 k 次方
  • 6. 計算一個數的每位之和(遞歸實現)
  • 7. 求階乘
  • 8. 打印一個數的每一位

1. C程序常見的錯誤分類不包含:( )

C程序常見的錯誤分類不包含:()

A.編譯錯誤
B.鏈接錯誤
C.棧溢出
D.運行時錯誤

答案:C

解析:

棧溢出是運行時錯誤的一種,因此C程序不會將棧溢出錯誤單獨列出來,棧溢出包含在運行時錯誤中。

因此:選擇C

2. 根據下面遞歸函數:調用函數 Fun(2) ,返回值是多少( )

根據下面遞歸函數:調用函數Fun(2),返回值是多少( )

int Fun(int n)      
{ if(n==5)   return 2;     else     return 2*Fun(n+1);      
}

A. 2
B. 4
C. 8
D. 16

答案:D

解析:

Fun(2)--->返回16return 2*Fun(3)  2*8=16|__Fun(3):8return 2*Fun(4)  2*4=8|__Fun(4):4return 2*Fun(5) 2*2=4|__Fun(5):2  return 2

因此,選擇D

3. 關于遞歸的描述錯誤的是:( )

關于遞歸的描述錯誤的是:( )

A.存在限制條件,當滿足這個限制條件的時候,遞歸便不再繼續
B.每次遞歸調用之后越來越接近這個限制條件
C.遞歸可以無限遞歸下去
D.遞歸層次太深,會出現棧溢出現象

答案:C

解析:

遞歸的兩個條件:

  1. 將問題轉化為其子問題,子問題要與原問題具有相同的解法

  2. 遞歸的出口

A:正確,限制條件即遞歸的出口,如果限制條件滿足,遞歸程序就可以退出了

B:正確,因為每次遞歸,都是將原問題進一步縮小,縮小到限制條件時,就可以往回返,直到第一次遞歸調用

比如:遞歸求和

int Sum(int N){if(N == 1)return 1;return Sum(N-1)+N;}

假設:求 Sum(4) 的遞歸調用過程

Sum(4)<----|       ||       |Sum(3)<----|       ||       |Sum(2)<----|       ||       |Sum(1)-----

C:錯誤,遞歸不能無限遞歸下去,否則會造成死循環和棧溢出

D:正確,因為每次遞歸,相當于都是一次新的函數調用,而每次函數調用系統必須給該函數劃分棧幀空間,內部的遞歸函數沒有退出,上層的遞歸就不能退出,棧幀就會累積許多塊,如果累積超過棧的總大小,就會棧溢出。

4. 計算斐波那契數

遞歸和非遞歸分別實現求第n個斐波那契數

例如:

輸入:5 輸出:5

輸入:10, 輸出:55

輸入:2, 輸出:1

參考答案:

/*
思路:
一個問題直接求解時不好求解,如果可以將其劃分成其子問題,并且子問題和原問題有相同的解法時,就可以使用遞歸的方式解決
遞歸的兩個條件:1. 將問題劃分成其子問題,要求:子問題要與原問題具有相同的解法2. 遞歸的出口1                 N < 3              
Fac(N)      Fac(N-1) + Fac(N-2)     N >= 3
*/long long Fac(int N)
{if(N < 3)return 1;return Fac(N-1) + Fac(N-2);
}

5. 遞歸實現 n 的 k 次方

編寫一個函數實現 n 的 k 次方,使用遞歸實現。

參考答案:

/*
思路:1      K==0
Pow(n,K) = Pow(n, K-1)*n*/
int Pow(int n, int k)
{if(k==0)return 1;else if(k>=1){return n*Pow(n, k-1);}
}

6. 計算一個數的每位之和(遞歸實現)

寫一個遞歸函數 DigitSum(n) ,輸入一個非負整數,返回組成它的數字之和

例如,調用 DigitSum(1729) ,則應該返回 1 + 7 + 2 + 9,它的和是 19

輸入:1729,輸出:19

參考答案:

/*
思路:n    n < 10
DigiSum(n) = DibiSum(n/10)+n%10   // 前n-1位之和+第N位
*/int DigitSum(int n)//1729
{if(n>9)return DigitSum(n/10)+n%10;elsereturn n;
}

7. 求階乘

遞歸和非遞歸分別實現求 n 的階乘(不考慮溢出的問題)

參考答案:

/*
Fac(N) = 1*2*3*……*N遞歸方式實現:1    N <= 1
Fac(N)Fac(N-1)*N    N >= 2
*/long long Fac(int N)
{if(N <= 1)return 1;return Fac(N-1)*N;
}/*
循環方式:從1乘到N即可
*/
long long Fac(int N)
{long long ret = 1;for(int i = 2; i <= N; ++i){ret *= i;}return ret;
}

8. 打印一個數的每一位

遞歸方式實現打印一個整數的每一位

參考答案:

/*
思路:N   N <= 9
Print(N)Print(N-1), 打印N
*/void print(unsigned int n){if(n>9)print(n/10);printf("%d ", n%10);}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91385.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91385.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91385.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

A?算法(A-star algorithm)一種在路徑規劃和圖搜索中廣泛使用的啟發式搜索算法

A?A*A?算法&#xff08;A-star algorithm&#xff09;是一種在路徑規劃和圖搜索中廣泛使用的啟發式搜索算法&#xff0c;它結合了Dijkstra算法的廣度優先搜索思想和啟發式算法的效率優勢&#xff0c;能夠高效地找到從起點到終點的最短路徑。 1. 基本原理 A*算法的核心是通過估…

UniappDay06

1.填寫訂單-渲染基本信息 靜態結構&#xff08;分包&#xff09;封裝請求API import { http } from /utils/http import { OrderPreResult } from /types/orderexport const getmemberOrderPreAPI () > {return http<OrderPreResult>({method: GET,url: /member/orde…

論文略讀:GINGER: Grounded Information Nugget-Based Generation of Responses

SIGIR 2025用戶日益依賴對話助手&#xff08;如 ChatGPT&#xff09;來滿足多種信息需求&#xff0c;這些需求包括開放式問題、需要推理的間接回答&#xff0c;以及答案分布在多個段落中的復雜查詢RAG試圖通過在生成過程中引入檢索到的信息來解決這些問題但如何確保回應的透明性…

從內部保護你的網絡

想象一下&#xff0c;你是一家高端俱樂部的老板&#xff0c;商務貴賓們聚集在這里分享信息、放松身心。然后假設你雇傭了最頂尖的安保人員——“保鏢”——站在門口&#xff0c;確保你準確掌握所有進出的人員&#xff0c;并確保所有人的安全。不妨想象一下丹尼爾克雷格和杜安約…

Redis 中 ZipList 的級聯更新問題

ZipList 的結構ZipList 是 Redis 中用于實現 ZSet 的壓縮數據結構&#xff0c;其元素采用連續存儲方式&#xff0c;具有很高的內存緊湊性。ZipList 結構組成如下&#xff1a;zlbytes&#xff1a;4字節&#xff0c;記錄整個ziplist的字節數zltail&#xff1a;4字節&#xff0c;記…

【蒼穹外賣項目】Day05

&#x1f4d8;博客主頁&#xff1a;程序員葵安 &#x1faf6;感謝大家點贊&#x1f44d;&#x1f3fb;收藏?評論?&#x1f3fb; 一、Redis入門 Redis簡介 Redis是一個基于內存的 key-value 結構數據庫 基于內存存儲&#xff0c;讀寫性能高適合存儲熱點數據&#xff08;熱…

語音識別dolphin 學習筆記

目錄 Dolphin簡介 Dolphin 中共有 4 個模型&#xff0c;其中 2 個現在可用。 使用demo Dolphin簡介 Dolphin 是由 Dataocean AI 和清華大學合作開發的多語言、多任務語音識別模型。它支持東亞、南亞、東南亞和中東的 40 種東方語言&#xff0c;同時支持 22 種漢語方言。該模…

視頻生成中如何選擇GPU或NPU?

在視頻生成中選擇GPU還是NPU&#xff0c;核心是根據場景需求、技術約束和成本目標來匹配兩者的特性。以下是具體的決策框架和場景化建議&#xff1a; 核心決策依據&#xff1a;先明確你的“視頻生成需求” 選擇前需回答3個關鍵問題&#xff1a; 生成目標&#xff1a;視頻分辨率…

從豆瓣小組到深度洞察:一個基于Python的輿情分析爬蟲實踐

文章目錄 從豆瓣小組到深度洞察:一個基于Python的輿情分析爬蟲實踐 摘要 1. 背景 2. 需求分析 3. 技術選型與實現 3.1 總體架構 3.2 核心代碼解析 4. 難點分析與解決方案 5. 總結與展望 對爬蟲、逆向感興趣的同學可以查看文章,一對一小班教學:https://blog.csdn.net/weixin_…

RustDesk 使用教程

說明&#xff1a; 使用RustDesk 需要在不同的電腦安裝對應系統型號的客戶端&#xff0c;然后再去云服務器安裝一個服務端即可。 1、到網站下載客戶端&#xff1a;https://rustdesk.com/zh-cn/ 兩臺電腦安裝客戶端。 2、在云服務器安裝服務端 1&#xff09;官網教程&#xff1a;…

【C語言網絡編程基礎】TCP 服務器詳解

在網絡通信中&#xff0c;TCP&#xff08;Transmission Control Protocol&#xff0c;傳輸控制協議&#xff09;是一種可靠、面向連接的協議。一個 TCP 服務器正是基于這種協議&#xff0c;為客戶端提供穩定的網絡服務。本文將詳細介紹 TCP 服務器的基本原理和工作流程。 一、什…

一篇就夠!Windows上Docker Desktop安裝 + 漢化完整指南(包含解決wsl更新失敗方案)

前言 在現代軟件開發和人工智能應用中&#xff0c;環境的穩定性和可移植性至關重要。Docker 作為一種輕量級的容器化技術&#xff0c;為開發者提供一致的運行環境&#xff0c;使得軟件可以在不同平臺上無縫運行&#xff0c;極大地提升了開發和部署的效率。無論是本地開發、測試…

設計模式(二十四)行為型:訪問者模式詳解

設計模式&#xff08;二十四&#xff09;行為型&#xff1a;訪問者模式詳解訪問者模式&#xff08;Visitor Pattern&#xff09;是 GoF 23 種設計模式中最具爭議性但也最強大的行為型模式之一&#xff0c;其核心價值在于將作用于某種數據結構中的各元素的操作分離出來&#xff…

USRP X440 和USRP X410 直接RF采樣架構的優勢

USRP X440 和USRP X410 直接RF采樣架構的優勢概述什么是直接RF采樣&#xff1f;如何實現直接采樣&#xff1f;什么情況下應考慮使用直接RF采樣架構&#xff1f;概述 轉換器技術每年都在發展。主要半導體公司的模數轉換器(ADC)和數模轉換器(DAC)的采樣速率比十年前的產品快了好…

P4568 [JLOI2011] 飛行路線

P4568 [JLOI2011] 飛行路線 題目描述 Alice 和 Bob 現在要乘飛機旅行&#xff0c;他們選擇了一家相對便宜的航空公司。該航空公司一共在 nnn 個城市設有業務&#xff0c;設這些城市分別標記為 000 到 n?1n-1n?1&#xff0c;一共有 mmm 種航線&#xff0c;每種航線連接兩個城市…

MySQL 中的聚簇索引和非聚簇索引的區別

MySQL 中的聚簇索引和非聚簇索引的區別 總結性回答 聚簇索引和非聚簇索引的主要區別在于索引的組織方式和數據存儲位置。聚簇索引決定了表中數據的物理存儲順序&#xff0c;一個表只能有一個聚簇索引&#xff1b;而非聚簇索引是獨立于數據存儲的額外結構&#xff0c;一個表可以…

全局異常處理,可以捕捉到過濾器中的異常嗎?

全局異常處理,可以捕捉到過濾器中的異常嗎? 全局異常處理器(如Spring的@ControllerAdvice+@ExceptionHandler)默認無法直接捕獲過濾器(Filter)中拋出的異常,這是由過濾器和Spring MVC的執行順序及職責邊界決定的。具體原因和解決方案如下: 一、為什么全局異常處理器默…

市政道路積水監測系統:守護城市雨天出行安全的 “智慧防線”

市政道路積水監測系統&#xff1a;守護城市雨天出行安全的 “智慧防線”柏峰【BF-DMJS】每逢汛期&#xff0c;強降雨引發的城市道路積水問題&#xff0c;不僅會造成交通擁堵&#xff0c;更可能危及行人和車輛安全&#xff0c;成為困擾城市管理的一大難題。傳統的積水監測主要依…

搭建HAProxy高可用負載均衡系統

一、HAProxy簡介Haproxy 是一個使用C語言編寫的自由及開放源代碼軟件&#xff0c;其提供高可用性、負載均衡&#xff0c;以及基于TCP和HTTP的應用程序代理。haproxy優點 1. Haproxy支持兩種代理模式 TCP&#xff08;四層&#xff09;和HTTP&#xff08;七層&#xff09;&#x…

GO語言 go get 下載 下來的包存放在哪里

在 Go 中&#xff0c;通過 go get&#xff08;或 Go Modules 下的自動下載&#xff09;獲取的第三方包&#xff0c;具體存儲位置取決于你是否啟用了 Go Modules&#xff08;推薦方式&#xff09;。? 1. 如果你使用了 Go Modules&#xff08;Go 1.11 默認開啟&#xff09;當前 …