1,2,4,2,3,6,12,6,3,....求第n项值
#include <stdio.h>
int fun(int n, int *x, int *y)//求n项值以及该值所处行列,*x初始值为1,*y初始值为0
{
int sum = 0, i;
int size = 0;
int dd = 1;
for (i = 1; i <= (*x); i++)//计算总的数据数量(包括所求数值所在行的整行数据)
{
sum += (2 * i - 1);
}
if (sum == n)//当该项位置与数据数量相同,输出数据值与行列值
{
*y = 2 * (*x) - 1;
return (*x);
}
else if (sum > n)//当该项位置小于总数据量
{
(*y) = n - (sum - (2 * (*x) - 1));
size = 2 * (*x) - 1;
dd = (*x);
for (i = 2; i <= (*y); i++)
for (i = 2; i <= (*y); i++)
{
if (i <= (*x))
dd *= 2;
else
dd /= 2;
}
return dd;
}
else//当该项位置大于目前总数据量,行数增加,进入递归
{
(*x)++;
return fun(n, x, y);
}
}
int main()
{
int n;
int row = 1, col = 0;
int val;
row = 1;
col = 0;
printf("请输入n:");
scanf("%d", &n);
val = fun(n, &row, &col);
printf("第%d项是:%d\n", n, val);//输出第n项的数值
return 0;
}
每日一练-递归求第n项值
最新推荐文章于 2022-08-29 09:42:43 发布