题解 | #牛牛的Hermite多项式#

牛牛的Hermite多项式

https://www.nowcoder.com/practice/0c58f8e5673a406cb0e2f5ccf2c671d4

#include <stdio.h>
int hermite(int n,int x){
  if(n==0) return 1;
  if(n==1) return 2*n;
  return 2*x*hermite(n-1,x)-2*(n-1)*hermite(n-2,x);
}
int main() {
  int n,x;
  scanf("%d%d",&n,&x);
  int d=hermite(n,x);
  printf("%d",d);
  return 0;
}

/*如果你在上面的 return 2*x*hermite(n-1,x)-2*(n-1)*hermite(n-2,x); 前面加上if(n>1) ,编译会是错误的,为什么呢?
虽然逻辑上n总是满足 n == 0,n == 1 或 n > 1 中的一种情况,但编译器并不能确定这一点。在这种情况下,C 语言标准认为函数可能存在未定义行为,因为并非所有路径都有 return;
当然你也可以这么写:
if(n>1) return 2*x*hermite(n-1,x)-2*(n-1)*hermite(n-2,x);
return 0;// 默认返回值(逻辑上永远不会触发)
这样也会覆盖所有路径。

全部评论

相关推荐

菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务