gpt4 book ai didi

c - 实现数学递归公式

转载 作者:太空宇宙 更新时间:2023-11-04 05:24:42 25 4
gpt4 key购买 nike

我有这样一个公式:

enter image description here

我正在尝试学习如何在 C 中实现递归,并编写了以下代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int a(int n)
{
if(n == 0)
return 0;
if(n == 1)
return 1;
if(n%2 == 0)
return a(2*(n-1)) + a(2*(n-2));
if(n%2 != 0)
return a(2*n) - a(2*(n-1));
}

int main()
{
int n = 3;
printf("%d\n", a(n));

return 0;
}

但是,我的代码出现段错误,这是什么问题?

最佳答案

你想这样做:

int a(int n)
{
if(n == 0)
return 0;
if(n == 1)
return 1;
if(n%2 == 0)
return a(n-1) + a(n-2);
else
return a(n-1) - a(n-2);
}

你所拥有的(在数学上)称为序列。请查看您序列中的索引,然后它可能更有意义。你不能只在那里替换 2n-1 并且肯定不是 2*(n-1) 这是错误的。

此外:如果您想将序列扩展为一系列,递归不是实现它的最佳方法。那么你最好从 0、1 开始,然后迭代地做这些事情。

希望对你有帮助

关于c - 实现数学递归公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35483438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com