• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:再帰を使用した関数にしたい)

再帰を使って2進数の連続する1bitの最大値を求める関数

このQ&Aのポイント
  • 再帰を使って2進数の連続する1bitの最大値を求める関数について教えてください。
  • 現在の関数では、最下位ビットのチェックと右シフトを使用して最大値を求めています。再帰を使って書き直す場合、どのようになるのか教えてください。
  • サンプルコードを教えていただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

http://stackoverflow.com/a/12617595 の回答を再帰化すると、 https://pastebin.com/KcSFAeSp になるかなと思います。

marudora
質問者

お礼

サンプルコードありがとうございます。該当部分を抜き出してみました。 static uint8_t count_consecutive_ones_recursive_sub(uint64_t in, uint8_t acc) {  if (in == 0) return acc;  return count_consecutive_ones_recursive_sub((in & (in << 1)), acc + 1); } 再帰だと簡潔に書けますね。自分を呼び出した時、計算結果を引数で伝えていく感じでしょうか。 参考になりました。

関連するQ&A