在 B 站上偶然看到了这个系列 “从 0 开始的 C++ 算法课” ,感觉很适合入门,于是就跟着视频学习记录了一下。
需求:使用递归方式求解等差数列 1 4 7 10 13 … 第 n 项的值,要求输入 n 输出第 n 项的值
首先定义函数 f ,输入的参数为整数 n ,对于这个等差数列返回结果依然为整数,所以返回结果为整数 res
然后我们调用这个函数本身求出 res 的值,若输入的参数为 6 则函数计算流程如下
可以看到整个过程是依次往前计算,但是我们知道数列没有第 0 项,因此递归函数不能没有限制
递归需要有起始项,避免无限制递归,因此需要手动设置 n = 1 时的 res 值
if (n == 1){
res = 1;
}
else{
res = f(n-1)+3;
}
记得提前定义 res
完整代码如下
#include <stdio.h>
int f(int n)
{
int res;
if (n == 1)
{
res = 1;
}
else
{
res = f(n - 1) + 3;
}
return res;
}
int main()
{
int n;
printf("Please enter a value for 'n': ");
scanf("%d", &n);
printf("The value of the %d item is: %d", n, f(n));
return 0;
}
作业
题 1
#include <stdio.h>
int f(int n)
{
int res;
if (n == 1)
{
res = 2;
}
else
{
res = f(n - 1) * 2;
}
return res;
}
int main()
{
int n;
printf("Please enter a value for 'n': ");
scanf("%d", &n);
printf("The value of the %d item is: %d", n, f(n));
return 0;
}
题 2
#include <stdio.h>
int f(int n)
{
int res;
if (n == 0 || n == 1)
{
res = 1;
}
else
{
res = f(n - 1) * n;
}
return res;
}
int main()
{
int n;
printf("Please enter a value for 'n': ");
scanf("%d", &n);
printf("The factorial of %d is: %d", n, f(n));
return 0;
}