再帰関数はいつもよくありませんか.
2372 ワード
貴関数にあります。
再帰関数は,一定の条件を満たす前に,自分の関数を絶えず呼び出す.
簡単な例を挙げる.
def factorial(x):
if x == 1:
return 1
else:
return (x * factorial(x-1))
上の関数は入力数のパラメータを計算する関数です.このように、関数内部で自分の関数を呼び出し続けることを再帰関数と呼び、いくつかの条件を満たすと、その結果が順番に返されます.
再帰関数はよくありませんか。使えませんか。
私のように悩んでいる人は一人もいません.
検索により、Stack Overflowには答弁するという明瞭なものがあることが分かった.
内容は以下のように要約する.
再帰関数は、実際の操作では使用できない方法ではありません.ただ、一つを選びます.
これは、ツリー構造または同じ論理を繰り返し続ける必要がある場合に便利です.
ただし、オーバーフローが発生する可能性があります.
あまり大きなデータを使わないように注意してください!
実際のサービスで再帰関数を使用した経験
APIで再帰関数を使用する場合は2つの事項を考慮した.
1.このAPIの呼び出しの程度はどのくらい頻繁ですか?
2.この関数で処理されるデータの大きさはどれくらいですか.
再帰関数を使用するAPIは、ホームページのadmin pageメニュー変更機能です.
メニューのデータベース構造は以下の通りです.子供と親の関係はN:1です.
必要な機能は、Json形式で入った新しいメニュー構造を保存することです.
入る仕組みは以下の通りです.
"menus": [
{
"url": "notice",
"name": "공지사항",
"children": []
},
{
"url": "board",
"name": "게시판",
"children": [
{
"url": "open",
"name": "잡담",
"children": [
{
"url": "open1",
"name": "잡담 게시판1",
"children": []
}
]
}
]
}
]
}
メニューの深さは計画によっていつでも3段以上に増やすことができます.この機能は、再帰関数を使用せずに実現できます.
しかし、再帰関数を使用するとコードがより簡潔になると思います.
上の質問に答えを考えた.
1)APIの呼び出し頻度はどのくらいですか.
上記の回答を考慮すると,再帰関数を用いない理由はない.
開発チームメンバーと相談した結果、大きな問題はないと結論し、簡単で拡張性のあるAPIを作成しました.
参考資料:Is再帰a Basdのやり方は普通ですか?stack overflow
Reference
この問題について(再帰関数はいつもよくありませんか.), 我々は、より多くの情報をここで見つけました
https://velog.io/@yomapi/재귀함수는-항상-나쁜걸까
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(再帰関数はいつもよくありませんか.), 我々は、より多くの情報をここで見つけました https://velog.io/@yomapi/재귀함수는-항상-나쁜걸까テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol