首页 > 试题广场 >

给定下列递归算法程序段,则输出为()。 int f1(int

[单选题]
给定下列递归算法程序段,则输出为()。
int f1(int n) {
	if(n <= 1) return 1;
	else return f1(n - 1) * 2;
}
int f2(int n) {
	if(n <= 1) return 1;
	else return f2(n - 1) + f1(n) + n / 2;
}
int f3(int n) {
	if(n <= 1) return 1;
	else return f3(n - 1) + f2(n) + n;
}

int main() {
	printf("%d",f3(5));
}
  • 37
  • 68
  • 84
  • 100
本题可以将迭代转换为循环格式,将递归转换为由底向上递推的格式,分别计算f1,f2,f3的计算结果,并保存在数组中,避免重复计算。f1(1 2 4 8 16),f2(1 4 9 19 37),f3(1 7 19 42 84)
发表于 2021-12-21 10:02:55 回复(0)
注意: C中的n/2是向下取整的。这种复杂的递推最好选择自底向上。
发表于 2022-03-23 09:22:48 回复(0)
有没有简单的方法
发表于 2022-03-10 12:09:24 回复(0)