1. 现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
牛客:斐波那契数列_牛客题霸_牛客网 (nowcoder.com)
int Fibonacci(int n ) {
// write code here
if (n == 0) return 0;
else if (n == 1) return 1;
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
2.给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。
牛客:Fibonacci数列__牛客网 (nowcoder.com)
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int ret = 0;
while(!isFib(0,1,n-ret)&&!isFib(0,1,n+ret)){
ret++;
}
System.out.println(ret);
}
private static boolean isFib(int a,int b,int n){
if(n==a||n==b) return true;
else if(a>n&&b>n) return false;
int max = Math.max(a,b);
return isFib(max,a+b,n);
}
}