4 回答
TA贡献1825条经验 获得超6个赞
您可以简单地使用另一个函数来处理负面要求:
public static int AlternatingFiboonacci(int n){
if(n > 0 && n % 2 == 0) return -fib(n); //if n is even and greater than 0
else return fib(n);
}
如果您需要一个单一的工作功能,这应该可以完成工作
public static int fib(int n){
if(n < 2) return n;
if(n % 2 == 0) return -1 * (fib(n - 1) - fib(n - 2));
else return (-1 * fib(n - 1)) + fib(n - 2);
}
这个函数的作用是:
当
n
为偶数时,返回fib(n - 1)
(为奇数,因此为正)-fib(n - 2)
(为偶数,因此为负)。减法将是一个正值,乘以 -1。当
n
为奇数时,返回 -1 *fib(n - 1)
(为偶数,因此为负)+fib(n - 2)
(为奇数,因此为正)。
TA贡献1942条经验 获得超3个赞
也许现在把这个作为答案还为时不晚:
public static long fib(long n){
if (n <= 1){
return n;
} else {
return fib(n-2) - fib(n-1);
}
}
TA贡献1789条经验 获得超10个赞
您可以先获取您的号码:
public static long fib(long n) {
if ((n == 0) || (n == 1))
return n;
else
return fib(n - 1) + fib(n - 2);
}
然后根据需要添加减号:
public long result(long n){
long fib = fib(n);
if(n>0 && n%2==0) return -fib;
else return fib;
}
TA贡献1757条经验 获得超8个赞
想想这个公式。
您想要正常的斐波那契数列,但在偶数位置上它们为负数。假设您的方法将被命名为 altFib。如果您应用Math.abs( altFib(n) ),您将获得第 n 个斐波那契数的实际值,因此很明显,下面的代码也会产生第 n 个斐波那契数:
int fib_n = Math.abs( altFib(n-1) ) + Math.abs( altFib( n-2 ) )
然后你希望它在偶数位置上为负,所以只需使用简单的 if else :
if( n % 2 == 0 )
return -fib_n
else
return fib_n
添加回答
举报