一、问题描述
二、解题方法
可以采用两种方式:
方式1.使用递归,f(n)=f(n-1)+f(n-2);
当n=1时,返回first;当n=2时,返回second;
方式2.从第3个结点开始计算,当计算到第n个结点值的时候结束并返回计算结果。
f(3)=f(2)+f(1);f(4)=f(3)+f(2);f(5)=f(4)+f(3);... 一直计算到f(n);
从执行次数来看,方式1的执行效率比方式2低。
三、代码实现
方式1.递归实现 ↓
import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param first int整型 * @param second int整型 * @param n int整型 * @return int整型*/public int findNthValue (int first, int second, int n) {//所有节点值的集合就是一个斐波那契数列int res=0;//可以使用递归方式if(n==1){res=first;}else if(n==2){res=second;}else{res=findNthValue(first,second,n-1)+findNthValue(first,second,n-2);}return res;}
}
方式2.遍历计算 ↓
import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param first int整型 * @param second int整型 * @param n int整型 * @return int整型*/public int findNthValue (int first, int second, int n) {//所有节点值的集合就是一个斐波那契数列int res=0;//也可以使用遍历方式int icounter=0;int pre1=first,pre2=second;if(n==1){res=first;}else if(n==2){res=second;}else{icounter=3;for(;icounter<=n;icounter++){res=pre1+pre2;pre1=pre2;pre2=res;}}return res;}
}
四、刷题链接
牛牛猜节点_牛客题霸_牛客网