c语言:请编写函数fun(),他的功能是:求f(0)到f(50)的最小值,已知:f(0)=f(1)=1,f(2)=0,f

问题描述:

c语言:请编写函数fun(),他的功能是:求f(0)到f(50)的最小值,已知:f(0)=f(1)=1,f(2)=0,f(n)=f(n-1)-2*f(n-2)-f(n-3) (n>2).
1个回答 分类:综合 2014-12-14

问题解答:

我来补答
#include <stdio.h>
#include <stdlib.h>

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)
{
min = v;
}
}
return min;
}

int main()
{
printf("%d", fun());
}
再问: 亲问可以用一个函数做出来吗 你定义了两个函数啊
再答: #include <stdio.h>

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] < min)
\x09\x09{
\x09\x09\x09min = f[i]; // 当前值如果小于当前最小值,当前值作为最小值。
\x09\x09}
\x09}
\x09return min;
}

int main()
{
\x09printf("%d", fun());
\x09
\x09return 0;
}
再问: f[2]不是数组了吗
 
 
展开全文阅读
剩余:2000