That depends on a lot of factors. In general function apps should be used to replace things that you would normally have implemented as a service or as a scheduled job. Hence they tend to be time-trigger based. In this case there is no user so nothing to download to.
If you are implementing an HTTP-trigger function then you're building a mini-API service. In this case you could return a file as it is a normal HTTP response as discussed here. However that may not scale well depending on the size of the file and what it takes to generate it. Unless you have a single endpoint and just need to generate a single file then an Azure Function may not be the best way to go here. You would probably do better to build an actual API application.
An alternative approach to returning the file is to use the Azure Storage binding to store the file in Storage. Then generate a link to the generated file, or to something that can get it from storage if the storage is accessible to your clients. You can then optimize multiple calls to get the same file. It also eliminates the problems you'll run into if you try to download large files and/or need to support range-based downloads.