-2
私はプログラミングの初心者ではありません。私は今、ほぼ3年間プログラミングしています。しかし、私はまだ再帰的プログラムの理解と設計については不満を感じています。時には、多くの時間を要するプロセス全体を書き留める必要があります。 は、このプログラムを言う: 平衡二分探索木再帰的プログラムを設計する
にソートされた配列に変換TreeNode* sortedArrayToBST(vector<int>& nums) {
return help(nums, 0, nums.size()-1);
}
TreeNode* help(vector<int> &nums, int start, int end){
int size=end-start;
if(size<0) return NULL;
if(size==0) return new TreeNode(nums[start]);
int mid=(start+end)/2;
TreeNode* root=new TreeNode(nums[mid]);
root->left=help(nums, start, mid-1);
root->right=help(nums, mid+1, end);
return root;
}
私はどのようにツリーの形を追跡する非常に苦労を持って....そして、私は間違いなくこのようなプログラムを自分でデザインすることができません。私はすでに30の再帰的なプログラムを見てきました。私はそれに精通するためにもっと練習をする必要があることを知っています。あなたが再帰的なプログラムを設計するときの考え方プロセスと再帰的なプログラムを素早く理解する方法を知りたいだけです。 多くの多くのありがとう!!
再帰的にプログラムする方法についての質問はありますか? –
階乗関数を最初に理解してみてください。 https://en.wikipedia.org/wiki/Recursion_%28computer_science%29 – Matsmath
これは再帰的にプログラムする方法です。例として問題を使用します。 –