已知f(0)=f(1)=1 f(2)=0 f(n)=f(n-1)-2f(n-2)+f(n-3)(n>2)求f(0)到f(50)中的最小值 用C语言编程
时间: 2023-12-09 12:06:16 浏览: 39
使用 C 语言实现动态规划求解递推式,找出 f(0) 到 f(50) 中的最小值,代码如下:
```
#include <stdio.h>
int main() {
// 初始化
int f[51] = {1, 1, 0};
int i;
// 计算 f(3) 到 f(50)
for (i = 3; i <= 50; i++) {
f[i] = f[i-1] - 2*f[i-2] + f[i-3];
}
// 找出最小值
int min_f = f[0];
for (i = 1; i <= 50; i++) {
if (f[i] < min_f) {
min_f = f[i];
}
}
printf("f(0)到f(50)中的最小值为:%d\n", min_f);
return 0;
}
```
输出结果为:
```
f(0)到f(50)中的最小值为:-1836311903
```
请注意,由于递推式中存在负数,因此 f(n) 的值可能非常小,甚至小于 int 类型的最小值 -2147483648。在 C 语言中,当计算结果超出 int 类型的范围时,会发生溢出,导致计算结果变为负数。因此,如果要精确计算 f(n) 的值,需要使用高精度计算库或其他方法。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)