以下是我的代码
DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\Users\Shahul\Documents\Visual Studio 2010\Projects\TreeView\TreeView\bin\FileExplorer");
private void Form1_Load(object sender, EventArgs e)
{
if (Directory.Exists("FileExplorer"))
{
try
{
DirectoryInfo[] directories = directoryInfo.GetDirectories();
foreach (FileInfo file in directoryInfo.GetFiles())
{
if (file.Exists)
{
TreeNode nodes = treeView.Nodes[0].Nodes.Add(file.Name);
}
}
if (directories.Length > 0)
{
foreach (DirectoryInfo directory in directories)
{
TreeNode node = treeView.Nodes[0].Nodes.Add(directory.Name);
node.ImageIndex = node.SelectedImageIndex = 0;
foreach (FileInfo file in directory.GetFiles())
{
if (file.Exists)
{
TreeNode nodes = treeView.Nodes[0].Nodes[node.Index].Nodes.Add(file.Name);
}
}
}
}
}
catch (Exception ex) …Run Code Online (Sandbox Code Playgroud) 我写了一个递归程序进行二分查找,正如你看到的,我试图在给定的数组中找到目标 =21 的位置,它应该将我的位置返回为 2。但是我的输出是 1。当我调试它时,它匹配 att arr[ start]=target, 然而它直接跳转到了 findTheNumber(arr, mid + 1, end, target); 然后是下一行,然后在中间返回..只是想知道为什么我的返回在“返回开始”时中断
package Recursion;
public class BinarySearch {
static int mid = 0;
public static int findTheNumber(int[] arr, int start, int end, int target) {
if (arr[start] == target) {
return start;
}
mid = (start + end) / 2;
if (arr[mid] == target) {
return mid;
}
if (target >arr[mid]) {
findTheNumber(arr, mid + 1, end, target);
} else if (target <arr[mid]) {
findTheNumber(arr, start, …Run Code Online (Sandbox Code Playgroud)