c语言6、 已知:f(0)=f(1)=1,f(2)=0,f(n)=f(n-1)-2*f(n-2)+f(n-3),n>2。输出所有的f(n)的值,并求f(0),f(1),……,f(50)中的最大值。
时间: 2023-12-14 13:03:23 浏览: 115
c语言求三个数的最大值
这道题可以用递归或者循环来实现。
递归实现:
```c
#include <stdio.h>
int f(int n) {
if (n == 0 || n == 1) {
return 1;
} else if (n == 2) {
return 0;
} else {
return f(n-1) - 2*f(n-2) + f(n-3);
}
}
int main() {
int i, max = 0;
for (i = 0; i <= 50; i++) {
int fn = f(i);
printf("f(%d) = %d\n", i, fn);
if (fn > max) {
max = fn;
}
}
printf("最大值是:%d\n", max);
return 0;
}
```
循环实现:
```c
#include <stdio.h>
int main() {
int i, fn[51], max = 0;
fn[0] = fn[1] = 1;
fn[2] = 0;
for (i = 3; i <= 50; i++) {
fn[i] = fn[i-1] - 2*fn[i-2] + fn[i-3];
}
for (i = 0; i <= 50; i++) {
printf("f(%d) = %d\n", i, fn[i]);
if (fn[i] > max) {
max = fn[i];
}
}
printf("最大值是:%d\n", max);
return 0;
}
```
阅读全文