我需要进行递归操作,但问题是函数仅取决于一个参数,内部函数取决于两个参数(k和n),如果仅返回一个值,该如何查找最小值?>
函数是:
我已经尝试过随机生成k,但我认为这并不是一个好主意。
F1(int n) {
Random random = new Random();
int k = random.Next(1,10);
if (1 <= k && k <= n){
return Math.Min(F1(k - 1) + F1(n - k) + n);
} else {
return 0;
}
}
答案 0 :(得分:1)
您需要循环遍历范围1..n中的所有k个值。像这样:
F1(int n) {
if (n == 0)
return ???? what is starting value?
minn = F1(0) + F1(n - 1) + n
for (int k = 2; k <= n; k++)
minn = Math.Min(minn, F1(k - 1) + F1(n - k) + n);
return minn;
}