淡江大學 英文學系

#新手 關於遞迴,需要一點想法。

1月3日 15:24
教科書說演算法需要創意,制式化的演算法教育會扼殺創意,但目前這個問題我需要一點新的想法。題目是把一個10進位正整數N轉換成2進位。 給定一個函數: void D2B(int N){ if(N==0 or N==1) print(N) else //your code here } 目前看到D2B這個函數不回傳任何值(void),所以我的code不會呼叫D2B這個函數,因為遞迴函數一定要回傳一個值才可以做出來。所以我應該在else區塊自己再定義一個函數才行。個人覺得這種題目會誤導我要用D2B做出遞迴,有陷阱在。
2
留言 16
文章資訊
Logo
每天有 6 則貼文
共 16 則留言
長庚大學
誰跟你說遞迴函數一定要回傳一個值才可以做出來的?
大同大學 資訊工程學系
讀懂遞迴在上來問
匿名
此帳號疑似異常
官方正在進行身份確認
英文系的在學遞迴😲?了不起👍
國立臺灣大學
D2B(N/2) Print(N%2)
淡江大學 資訊工程學系
確實,沒看到教科書原文,不過照原po貼的D2B function,且內文明確要你使用這fun解這問題的話,型態應該改成int ,然後print的地方改成return N比較合理。
原 PO - 淡江大學 英文學系
我用python去做這段code: def D2B(N): if(N == 0 or N == 1): print(N) else: D2B(int(N / 2)) print(N % 2) 是成功的。感謝B4的指點。
淡江大學
{ D2B((unsigned)n >> 1); D2B(!!(n & 1)); }
國立臺灣大學
我覺得print的end要改一下 或是使用c/c++