我想寫一個簡單的遞歸,用三次方法替換一個方法,並在完成後取回該函數運行的次數。在C#中這種遞歸有什麼問題?
我執行一個調用方法,它通過委託通過參數給出另一個方法,並打印一個簡單的消息三次。
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public delegate void funct(string msg);
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static void funct(string msg)
{
MessageBox.Show(msg);
}
public static int caller(funct f, string msg, int max, int count = 0)
{
if (count < max)
{
funct(msg);
caller(f, msg, max, ++count);
}
return count;
}
private void Form1_Load(object sender, EventArgs e)
{
int a = caller(funct, "LOL", 3);
//should return value 3, but returned with value 1
}
}
}
的返回值永遠是錯的,因爲我回到1,而不是3
只是把裁判詮釋計數 – MistyK
返回調用者(F,味精,MAX ++數); ...發生了什麼事是它通過第一次遞歸,並返回到調用函數..返回它自己,所以它不會達到第一個返回,直到它超過最大值 – Aaron