C语言函数递归错哪里

#include<stdio.h>
void  fact(int n,int a,int b)
{
    if(n==1)
     fact(n,a,b)=1;
     else if(n==2)
      fact(n,a,b)=1;
     else
      fact(n,a,b)=(a*fact(n-1,a,b)+b*fact(n-2,a,b))%7;
     printf("%d",fact(n,a,b));
}
int main()
{
    int a,b,n;
    scanf("%d%d%d",&a,&b,&n);
    fact(n,a,b);
}
 

 if(n==1)
     return 1;
     else if(n==2)
      return 1;

 

直接返回 1. 

 fact(n,a,b)  是一个函数, 不能用在赋值语句 =  的左边。 

参考一下这个博客: c++实现斐波那契数列代码_yangchuang93的博客-CSDN博客_斐波那契数列c++代码 

对函数赋值没有用,更何况fact函数是void函数。要想给它赋值的话就用返回值叭~

#include<stdio.h>
int  fact(int n,int a,int b)
{
    if(n==1)
     return 1;
     else if(n==2)
      return 1;
     else
      return (a*fact(n-1,a,b)+b*fact(n-2,a,b))%7;
}
int main()
{
    int a,b,n;
    scanf("%d%d%d",&a,&b,&n);
    printf("%d", fact(n,a,b));
}