タグ付けされた質問 「recursion」

再帰は、関数がそれ自体を呼び出す一種の関数呼び出しです。このような関数は、再帰関数とも呼ばれます。構造的再帰は、問題を解決する方法であり、問​​題の解決策は同じ問題の小さなインスタンスの解決策に依存します。

7
2 ** n-1を再帰関数として記述する方法は?
nを受け取り、2 n -1を返す関数が必要です。簡単に聞こえますが、関数は再帰的でなければなりません。これまでのところ、私は2 nしかありません: def required_steps(n): if n == 0: return 1 return 2 * req_steps(n-1) 演習では、「パラメータnは常に正の整数であり、0より大きいと想定できます。
49 python  recursion 

2
再帰的なメソッド呼び出しにより、kotlinでStackOverFlowErrorが発生するが、Javaでは発生しない
私はJavaとKotlinに2つのほとんど同じコードがあります Java: public void reverseString(char[] s) { helper(s, 0, s.length - 1); } public void helper(char[] s, int left, int right) { if (left >= right) return; char tmp = s[left]; s[left++] = s[right]; s[right--] = tmp; helper(s, left, right); } コトリン: fun reverseString(s: CharArray): Unit { helper(0, s.lastIndex, s) …
14 java  recursion  kotlin 

4
Cでのネストされたルートの計算
再帰のみを使用して、次のネストされたルート式を計算するように求められました。 機能する以下のコードを作成しnましたが、目的に応じて1 つの関数と1 つの入力しか使用できず、以前のように2 つ使用することはできませんでした。誰かがこのコードを式を計算する1つの関数に変換するのを手伝ってくれませんか?の関数以外のライブラリは使用できません<math.h>。 n = 10の出力: 1.757932 double rec_sqrt_series(int n, int m) { if (n <= 0) return 0; if (m > n) return 0; return sqrt(m + rec_sqrt_series(n, m + 1)); } double helper(int n) { return rec_sqrt_series(n, 1); }
9 c  recursion  sqrt 

4
オブジェクトをネストされたオブジェクトに分割する方法は?(再帰的な方法)
アンダースコア(_)変数名を含むデータセットがあります。以下のような: const data = { m_name: 'my name', m_address: 'my address', p_1_category: 'cat 1', p_1_name: 'name 1', p_2_category: 'cat 2', p_2_name: 'name 2' } それらをネストされたオブジェクト/配列に分割したいのですが、以下が結果です。 { m: { name: "my name", address: "my address" }, p: { "1": {category: 'cat 1', name: 'name 1'}, "2": {category: 'cat 2', name: 'name …

3
再帰的手続き内の「yield」
いくつかの変数の範囲を表すPythonリストがあるとします。 conditions = [['i', (1, 5)], ['j', (1, 2)]] これは、変数のi範囲が1〜5で、ループ変数のj範囲が1〜2であることを表しています。可能な組み合わせごとに辞書が必要です。 {'i': 1, 'j': 1} {'i': 1, 'j': 2} {'i': 2, 'j': 1} {'i': 2, 'j': 2} {'i': 3, 'j': 1} {'i': 3, 'j': 2} {'i': 4, 'j': 1} {'i': 4, 'j': 2} {'i': 5, 'j': 1} {'i': 5, 'j': 2} …

4
「戻る」コマンドなしで戻る
gccでコンパイルされたCプログラミング言語、WSLのターミナルbash 配列内で最小の数を見つけるために再帰関数を記述しましたが、これは問題なく機能します。 /*01*/ int minimo(int array[], int n) /*02*/ { /*03*/ static int min = 0; /*04*/ /*05*/ if (n == N) /*06*/ { /*07*/ return array[n-1]; /*08*/ } /*09*/ else /*10*/ { /*11*/ min = minimo(array, n+1); /*12*/ if(array[n]<min){ /*13*/ min = array[n]; /*14*/ } /*15*/ } /*16*/ } …

2
Rustでテール再帰はいつ保証されますか?
C言語 Cプログラミング言語では、末尾再帰を行うのは簡単です。 int foo(...) { return foo(...); } 再帰呼び出しの戻り値と同じように戻ります。この再帰が1000回または100万回繰り返される場合は特に重要です。スタックで大量のメモリを使用します。 さび これで、100万回再帰的に呼び出されるRust関数があります。 fn read_all(input: &mut dyn std::io::Read) -> std::io::Result<()> { match input.read(&mut [0u8]) { Ok ( 0) => Ok(()), Ok ( _) => read_all(input), Err(err) => Err(err), } } (これは最小限の例であり、実際の例はより複雑ですが、主なアイデアを捉えています) ここでは、再帰呼び出しの戻り値がそのまま返されますが、次のようになります。 Rustコンパイラが末尾再帰を適用することを保証しますか? たとえば、のように破棄する必要がある変数を宣言した場合、std::Vecそれは再帰呼び出しの直前(末尾再帰を可能にする)または再帰呼び出しが戻った後(末尾再帰を禁止する)に破棄されますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.