题解 | #牛牛的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;// 默认返回值(逻辑上永远不会触发)
这样也会覆盖所有路径。

全部评论

相关推荐

2024-11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务