已知f(0)=0f(1)=1f(n)=2*f(n-1)-3*f(n-2)+1,编写程序计算f(n)。要求:对每个数据n,计算并输出f(n)。

要求用C语言不用递归,不能太耗时。
2024-12-25 05:53:54
推荐回答(4个)
回答1:

不用递归(递归耗时)的话

#include 
int main(void)
{
int n, t, i;
int a = 0, b = 1;
scanf("%d", &n);
if (n == 1) {
printf("0\n");
} else if (n == 2) {
printf("1\n");
} else {
for (i = 2; i < n; i++) {
t = b;
b = 2 * b - 3 * a + 1;
a = t;
}
printf("%d\n", b);
}
return 0;
}

回答2:

/*
** 已知f(0)=0 f(1)=1 f(n)=2*f(n-1)-3*f(n-2)+1,编写程序计算f(n)。要求:对每个数据n,计算并输出f(n)。
*/
#include
long f(long n)
{
if (1 >= n)
{
return n;
}
else
{
return 2 * f(n - 1) - 3 * f(n - 2) + 1;
}
}
int main(void)
{
long n;
printf("\nInput n: ");
scanf("%ld", &n);
if (n < 0)
{
n = -n;
}
printf("\nf(%ld)=%ld\n", n, f(n));
return 0;
}

回答3:

#include
int f(int n)
{
if(n==0) return 0;
else if(n==1) return 1;
else return 2*f(n-1)-3*f(n-2)+1;
}
void main()
{
int n;
scanf("%d",&n);
printf("%d\n",f(n));
}

回答4:

#include "iostream.h"

int f(int n){
if(n==0) return 0;
else if(n==1) return 1;
else return (2*f(n-1)-3*f(n-2)+1);
}
void main()
{ int n;
cin>>n;
cout<}