#include
#include
int f(int n)
{
if (n == 0 || n == 1)
{
return 1;
}
if (n == 2)
{
return 0;
}
return f(n-1)-2*f(n-2)-f(n-3);
}
int fun()
{
int i, v;
int min = f(0);
for (i = 0; i<=50; ++i)
{
v = f(i);
if (v
{
min = v;
}
}
return min;
}
int main()
{
printf("%d", fun());
}
再问: 亲问可以用一个函数做出来吗 你定义了两个函数啊
再答: #include
int fun()
{
\x09int i, f[51], min; // f[51]存储f0-f50共51个值
\x09f[0] = 1;
\x09f[1] = 1;
\x09f[2] = 0; // 初始化 f[0],f[1],f[2]
\x09min = 0; // min取当前f[0],f[1],f[2]的最小值
\x09
\x09for (i=3; i<=50; ++i)
\x09{
\x09\x09f[i] = f[i-1] - 2*f[i-2] - f[i-3]; // 计算f[i]
\x09\x09if (f[i]
\x09\x09{
\x09\x09\x09min = f[i]; // 当前值如果小于当前最小值,当前值作为最小值。
\x09\x09}
\x09}
\x09return min;
}
int main()
{
\x09printf("%d", fun());
\x09
\x09return 0;
}
再问: f[2]不是数组了吗